3つの非同期関数a、b、cがあるとします。それぞれ1分で実行し、終了後にコールバックを呼び出します(最初の引数で渡されます)。あなたはノードを伝えたかった場合は「実行を開始し、その後、終了後にBを実行し、Bが終了した後にCを実行して」それは次のようになります。は、これら2つの非同期コールバックが同じものを書いていますか?
コード例:
a(function() {
b(function() {
c()
})
})
を希望私はこのように書いた場合、それは同じである:
function a(func){
setTimeout(function(){
console.log('a');
func()
}, 1000)
}
function b(func){
setTimeout(function(){
console.log('b')
func()
}, 1000)
}
function c(){
setTimeout(function(){
console.log('c')
}, 1000)
}
a(b(c)) //get error
a(function(){ //work
b(function(){
c()
})
})
:
a(b(c))
誰かが私に2つの例を与えました
は、しかし、私はまだ混乱して感じは、いくつかの説明が必要:D
コールバックの代わりに約束を使用するのが最適な解決策です。 – alexmac