【发布时间】:2018-01-25 17:30:48
【问题描述】:
我一直在努力解决我遇到的问题,但没有成功,因此我请求您的帮助。
让我们考虑以下示例:
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?一个承诺只被解决一次?第二个解决调用会发生什么?谢谢。
【问题讨论】:
标签: javascript node.js asynchronous es6-promise