此代码应该返回 12334 还是 12433 ?
我期望 12334 但它给出了 12433 ......
console.log '1'
anArray.forEach (info, index, array)->
console.log '2'
await model.findOne info, defer(err, doc)
console.log '3'
console.log '4'
此代码应该返回 12334 还是 12433 ?
我期望 12334 但它给出了 12433 ......
console.log '1'
anArray.forEach (info, index, array)->
console.log '2'
await model.findOne info, defer(err, doc)
console.log '3'
console.log '4'
您的直觉不正确:IcedCoffeeScriptawait...defer
不能阻止同步forEach
循环。
请记住,IcedCoffeeScript 编译为不支持阻塞的 JavaScript。一旦你调用forEach
了一个数组,你就承诺在触发任何事件之前遍历整个数组。
好消息是,您可以通过使用 IcedCoffeeScript 自己的循环构造来获得所需的行为。在你的情况下,
for info, index in anArray ->
...
有关处理 JavaScript 的非阻塞事件模型的更多信息,请查看我的新书Async JavaScript。