JavaScriptはコールバック関数の終了待ちです.
986 ワード
コールバック関数の終了を待つか、コールバック関数の戻り値を使う場合があります.Promiseを使ってこの目標を実現することができます.
問題
コールバック関数を含む関数を考慮する
コールバック関数を含む関数を
問題
コールバック関数を含む関数を考慮する
timeout(fun)
function timeout (fun) {
setTimeout(fun.bind(this, 1), 1000)
}
コール機能は以下の通りですtimeout(function (num) {
console.log(num)
})
console.log(2)
出力します2
1
解決策コールバック関数を含む関数を
Promise
に置いて、その後のステートメントをthen
に置くことができる.new Promise((resolve, reject) => {
timeout(function (num) {
console.log(num)
resolve()
})
}).then(() => {
console.log(2)
})
出力します1
2
async&awiatを使うes7
の新しい特性async
await
に関連して、またはyield
co
を利用してコードを簡略化することができる.(async function main () {
await new Promise((resolve, reject) => {
timeout(function (num) {
console.log(num)
resolve()
})
})
console.log('after', 2)
})()