【问题标题】:How to sleep in Node.js v9+ with ES6 [duplicate]如何使用 ES6 在 Node.js v9+ 中休眠 [重复]
【发布时间】:2018-07-31 04:00:20
【问题描述】:

现在是 2018 年,调制解调器节点的版本是 9 或 10,即 How Can I Wait In Node.js in year 2013已接受回答不再好。因此,根据the guidance of meta here,我再次询问。

现在答案的标准是使用现有的 ES6 和 Node.js v9+ 特性,而不需要任何额外的包。

我从@treecoder https://stackoverflow.com/a/44036791/2125837 找到了答案 特别有趣,但我无法让它适用于我的情况:

$ node
> const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))

> const waitThenDo = async (howLong, doWhat) => await sleep(howLong*1000).then(doWhat)

> waitThenDo(1, console.log(2))
2
Promise {
  <pending>,
 ... 

waitThenDo 立即进行打印,没有任何延迟。

我做错了什么,和/或,等待/睡觉的最佳最新技术是什么?

【问题讨论】:

  • 仅供参考:ping 某人的 @ 表示法仅在他们对此特定问题写了答案或评论时才有效。您不能在这里随便伸手触摸某人;这不是聊天室或社交网站。向一个人提出您的问题也是不合适的。如果您想个性化您的问题,请聘请您可以直接联系的承包商。
  • 好的。感谢您的友好解释。
  • doWhat 需要是回调函数
  • 试试async function waitAndLog() { await sleep(1000); console.log(2); }

标签: node.js ecmascript-6 wait sleep


【解决方案1】:

promise 的 then 方法需要一个函数:

waitThenDo(1, () => console.log(2))

你也可以这样做:

const waitThenDo = async (howLong, doWhat) => {
  await sleep(howLong*1000)
  doWhat()
}

waitThenDo(1, () => console.log(2))

【讨论】:

    猜你喜欢
    • 2018-04-06
    • 1970-01-01
    • 2018-04-21
    • 2018-04-10
    • 2014-11-06
    • 1970-01-01
    • 2016-11-29
    相关资源
    最近更新 更多