如何使用 ES6 在 Node.js v9+ 中休眠
How to sleep in Node.js v9+ with ES6
现在是 2018 年,调制解调器节点是版本 9 或 10,即 接受 来自 How Can I Wait In Node.js in year 2013 is no good any more. Hence I'm asking it again, as per the guidance of meta here 的回答。
现在答案的标准是使用现有的 ES6 和 Node.js v9+ 功能,而不需要任何额外的包。
我在 找到了@treecoder 的答案
特别有趣,但我无法让它适用于我的情况:
$ 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
立即打印,没有任何延迟。
我做错了什么,and/or,有什么最新的技术最好wait/sleep?
promise 的 then 方法需要一个函数:
waitThenDo(1, () => console.log(2))
您也可以这样做:
const waitThenDo = async (howLong, doWhat) => {
await sleep(howLong*1000)
doWhat()
}
waitThenDo(1, () => console.log(2))
现在是 2018 年,调制解调器节点是版本 9 或 10,即 接受 来自 How Can I Wait In Node.js in year 2013 is no good any more. Hence I'm asking it again, as per the guidance of meta here 的回答。
现在答案的标准是使用现有的 ES6 和 Node.js v9+ 功能,而不需要任何额外的包。
我在 找到了@treecoder 的答案 特别有趣,但我无法让它适用于我的情况:
$ 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
立即打印,没有任何延迟。
我做错了什么,and/or,有什么最新的技术最好wait/sleep?
promise 的 then 方法需要一个函数:
waitThenDo(1, () => console.log(2))
您也可以这样做:
const waitThenDo = async (howLong, doWhat) => {
await sleep(howLong*1000)
doWhat()
}
waitThenDo(1, () => console.log(2))