js
1function resolveSomeAfterSeconds() { 2 let time = 10000 * Math.random() 3 return new Promise((resolve, reject) => { 4 setTimeout(() => { 5 resolve(time) 6 }, time) 7 }) 8} 9 10async function sum(x) { 11 const a = await resolveSomeAfterSeconds() 12 const b = await resolveSomeAfterSeconds() 13 const c = await resolveSomeAfterSeconds() 14 const d = await resolveSomeAfterSeconds() 15 16 return a + b + c + d 17} 18 19sum(10).then(function(v) { console.log(v) })
上記コードが理解できません。
まずawaitというプレフィックスを使わずに、resolveSomeAfterSecondsを呼んだ場合、promoseオブジェクト?が返ってきますよね。
だから .then とかを使うことができる。
でも、awaitを使うと非同期処理が終わるのを待ってから次の行に行くだけでなく、resolve(time)のtimeが返ってくるのでしょうか。
console.logで確かめた時そうなってました。
そして、もしそうなら、 return a + b + c + d ここの部分は具体的な数値になるから
sum(10).then(function(v) { console.log(v) })
みたいなふうに .then を使えないと思うのですが、ここでは一体何が起こってるのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/01/28 10:44 編集