私は問題を回避するために努力してきましたが、成功していないため、私はあなたの助けを求めています。非同期コードの実行の説明
のは、たとえば次のよう考えてみましょう:
const async = require('async')
var counter = 0
var test = cb => {
if (++counter < 3) {
setTimeout(() => {
async.each([0,1,2], (item, callback) => {
console.log(item)
console.log('counter inner ' + counter)
test(cb)
callback()
},() => {
cb()
})
})
} else {
console.log('counter ' + counter)
}
}
var prom = new Promise((res, rej) => test(() => res('done')))
prom.then(res => console.log(res))
出力は次のようになります。私は理解していない何
0
counter inner 1
1
counter inner 2
counter 3
2
counter inner 3
counter 4
done
0
counter inner 4
counter 5
1
counter inner 5
counter 6
2
counter inner 6
counter 7
はそれが正しい二0
後counter inner 4
を印刷した方法です。印刷しないでくださいcounter inner 1
?そして約束は一度だけ解決されていますか? 2番目の解決呼び出しはどうなりますか?ありがとうございました。
[なぜ私の変数は関数内で変更した後に変更されないのですか? - 非同期コードリファレンス](https://stackoverflow.com/questions/23667086/why-is-my-variable-unaltered-after-i-modify-it-inside-of-a-function-asynchron) – Liam
* [1つ単語の回答:非同期性](https://stackoverflow.com/a/23667087/542251)* – Liam