a の 第1引数の関数の引数に resolve
がないので不可能です.
そもそも未定義なものを参照しています.
おそらく下記のように書き換えることで期待した動作になると思います.
(function(){
var a = Promise.resolve()
var b = a.then(function() {
console.log("first")
Promise.resolve(44)
}).then(function(d){
console.log(d)
console.log("sec")
})
})()
//=> first
//=> undefined
//=> sec
return にすると,Promise の機能の一つであるチェーンが発動します.
このページのチェーン参照
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise/then
上の例では,二回目のthenの引数である b
は undefined です.
なぜなら,チェーンされず単純に2回逐次的にPromiseを動作させているためです.
then メソッドはPromiseを返すので、return を使うことで,thenの呼び出しを簡単に繋ぐことができます.
(function(){
var a = Promise.resolve()
var b = a.then(function() {
console.log("first")
return 44;
}).then(function(d){
console.log(d)
console.log("sec")
})
})()
//=> first
//=> 44
//=> sec
これは,Promise.resolve() で作った Promiseを単純に2回連続で動作させているのではなく,一つのPromiseをチェーンさせています(Promise.resolve().then() が 返却した Promise の .prototype.then() を 読んでいる).
モダンなブラウザにある fetch API などがこのチェーンを有効活用していてわかり易い例の一つだと思います.
fetch('/users.html')
.then(function(response) {
return response.text()
}).then(function(body) {
document.body.innerHTML = body
})
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。