タイトルの通りなのですが、例えば以下のコードを実行するとコンソールに2秒後に15が出力されます。
JavaScript
1function sampleResolve(value) { 2 return new Promise(resolve => { 3 setTimeout(() => { 4 resolve(value * 2); 5 }, 2000); 6 }) 7} 8 9async function sample() { 10 const result = await sampleResolve(5); 11 return result + 5; 12} 13 14sample().then(result => { 15 console.log(result); // => 15 16});
これは、sampleResolveをawaitで待っているので、sampleResolveの結果が返ってきたらresultに+5をして、と次に進んでいきます。
ここでresultのawaitを消してみると、
JavaScript
1function sampleResolve(value) { 2 return new Promise(resolve => { 3 setTimeout(() => { 4 resolve(value * 2); 5 }, 2000); 6 }) 7} 8 9async function sample() { 10 const result = sampleResolve(5); 11 return result + 5; 12} 13 14sample().then(result => { 15 console.log(result); 16});
console
1"[object Promise]5"
このように出力されました。
resultは先にpromiseを返して、後から結果を返しますよ、ということだったと思います。
しかしながら、ここで疑問に思ったのは、15が返ってきていないことです。
本来なら、promiseの後に15が返ってくるという感覚を持っていたのですが、返って来なかったので疑問に思い質問させていただきました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。