追記
例が悪かったので,修正.
fugafugaがグローバル変数になってた
こんな感じのことがしたい
function hogePromise() {
return new Promise(function(resolve, reject) {
var hogehoge = "hogehoge";
resolve(hogehoge);
});
}
function hogeResolve(hogehoge) {
console.log(hogehoge);
//ここでfugafugaを表示したい
}
function hogefugaPrinter() {
var fugafuga = "fugafuga";
hogePromise().then(hogeResolve);
}
hogefugaPrinter();
パッと思いついたこと
jsの仕様詳しく知らないけど,
Haskellみたいに勝手にカリー化してくれんじゃないのかな.
function hogePromise() {
return new Promise(function(resolve, reject) {
var hogehoge = "hogehoge";
resolve(hogehoge);
});
}
function hogeResolve(fugafuga, hogehoge) {
console.log(hogehoge);
console.log(fugafuga);
}
function hogefugaPrinter() {
var fugafuga = "fugafuga";
hogePromise().then(hogeResolve(fugafuga));
}
hogefugaPrinter();
結果
fugafugaは表示されたけど,
hogehogeは未定義になってしまった.残念.
出力
undefined
fugafuga
解決策
クロージャを使う
function hogePromise() {
return new Promise(function(resolve, reject) {
var hogehoge = "hogehoge";
resolve(hogehoge);
});
}
function hogeResolve(fugafuga) {
return function(hogehoge) {
console.log(hogehoge);
console.log(fugafuga);
}
}
function hogefugaPrinter() {
var fugafuga = "fugafuga";
hogePromise().then(hogeResolve(fugafuga));
}
hogefugaPrinter();
結果
出力
hogehoge
fugafuga
できた
#雑感
二時間ぐらいここで悩んだ……
Promiseがいいといろんな記事が紹介してるけど,
ここら辺のことはあんまり書いてなかった(自分の見た限りでは)
と思ったので,記事にしました.
js最近少しずつ書けるようになってきたので,
ようやく面白みがわかってきた感じです.