这段代码应该返回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'
答案 0 :(得分:4)
你的直觉不正确:IcedCoffeeScript的await...defer
无法阻止同步forEach
循环。
请记住,IcedCoffeeScript编译为JavaScript,不支持阻止。一旦你在一个数组上调用forEach
,你就已经承诺在任何事件发生之前迭代整个数组。
好消息是,您可以使用IcedCoffeeScript自己的循环结构来获得所需的行为。在你的情况下,
for info, index in anArray ->
...
有关处理JavaScript的非阻止事件模型的更多信息,请查看我的新书Async JavaScript。