gpt4 book ai didi

node.js - Step.js 和使用 CoffeeScript 的异步控制流

转载 作者:太空宇宙 更新时间:2023-11-03 23:45:32 28 4
gpt4 key购买 nike

我正在尝试让 Step.js 库与 CoffeeScript 一起正常工作。我对咖啡很陌生,但这是我的尝试:

setTimeout(
=>
console.log("step 1 at #{new Date}")
setTimeout(
=>
console.log("step 2 at #{new Date}")
setTimeout(
=>
console.log("step 3 at #{new Date}")
10000
)
10000
)
10000
)

# step 1 at Tue Nov 13 2012 13:18:51 GMT-0600 (CST)
# step 2 at Tue Nov 13 2012 13:19:01 GMT-0600 (CST)
# step 3 at Tue Nov 13 2012 13:19:11 GMT-0600 (CST)

应该与:

相同
step(
->
setTimeout(
=>
console.log("step 1 at #{new Date}")
this(null)
10000
)
->
setTimeout(
=>
console.log("step 2 at #{new Date}")
this(null)
10000
)
->
setTimeout(
=>
console.log("step 3 at #{new Date}")
this(null)
10000
)
)

# step 1 at Tue Nov 13 2012 13:12:04 GMT-0600 (CST)
# step 2 at Tue Nov 13 2012 13:12:04 GMT-0600 (CST)
# step 3 at Tue Nov 13 2012 13:12:04 GMT-0600 (CST)

正如您从上面的示例中看到的,步骤是同时执行所有步骤,而不是像预期那样一次执行一个步骤。我不太清楚为什么现在会这样。

最佳答案

CoffeeScript 在函数的最后一个表达式前面隐式添加一个return。这是 Step 的一个问题,它假设如果您返回任何内容,则该步骤是同步的。

解决方案是在每个步骤函数的末尾添加显式的return:

step(
->
setTimeout(
=>
console.log("step 1 at #{new Date}")
this(null)
10000
)
return
->
setTimeout(
=>
console.log("step 2 at #{new Date}")
this(null)
10000
)
return
->
setTimeout(
=>
console.log("step 3 at #{new Date}")
this(null)
10000
)
return
)

关于node.js - Step.js 和使用 CoffeeScript 的异步控制流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13367427/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com