【问题标题】:Delay next yield with promise and setTimeout Generator JS [duplicate]使用 promise 和 setTimeout Generator JS 延迟下一个收益 [重复]
【发布时间】:2020-05-24 18:19:40
【问题描述】:

我不明白为什么我得到.log“之后”和“之前”一样的时间,没有延迟。 我做错了什么?

function *sequence () {
    yield console.log("before")        
    yield new Promise(resolve => setTimeout(resolve, 5000))
    yield console.log("after")
}

for (const item of sequence) {
   console.log("---")
}

【问题讨论】:

  • 因为你没有等待 Promise 解决..?
  • @CertainPerformance 这是一个非常广泛的网络,可以捕捉到重复的东西:)
  • 你可以看看启用async generator,例如:jsfiddle.net/f6dnqthp
  • @jay_dtr 你把yieldawait 混淆了吗?前者不等待任何事情。 console.log item 可能有助于了解发生了什么。
  • @Icepickle 我认为这不是 OP 想要的。

标签: javascript generator


【解决方案1】:

这可能是因为您没有等待承诺解决。您需要等待您在第二次收益时返回的承诺

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多