如何在Node.js v9+;使用ES6

如何在Node.js v9+;使用ES6,node.js,ecmascript-6,wait,sleep,Node.js,Ecmascript 6,Wait,Sleep,2018年,调制解调器节点的版本为9或10,也就是说,接受的答案不再是好的。因此,我再次问它,根据 现在答案的标准是使用现有的ES6和Node.js v9+功能,而不需要任何额外的软件包 我在@treecoder找到了答案 特别有趣,但我就是不能让它在我的案例中起作用: $ node > const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)) > const waitThenDo = asy

2018年,调制解调器节点的版本为9或10,也就是说,接受的答案不再是好的。因此,我再次问它,根据

现在答案的标准是使用现有的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>,
 ... 
$node
>const sleep=ms=>newpromise(解析=>setTimeout(解析,ms))
>const waitThenDo=async(howLong,doWhat)=>等待睡眠(howLong*1000)。然后(doWhat)
>waitThenDo(1,console.log(2))
2.
允诺{
,
... 
也就是说,
waitThenDo
立即进行打印,没有任何延迟


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

承诺的then方法需要一个功能:

waitThenDo(1, () => console.log(2))
您也可以这样做:

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

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

仅供参考:@notation to ping someone只有在他们对这个特定问题写了答案或评论的情况下才起作用。你不能在这里随意联系某人;这里不是聊天室或社交网站。向一个人提问也不合适。如果你想个性化你的问题,请雇佣一名c您可以直接与之通信的承包商。好的。谢谢您的友好解释。
doWhat
需要是回调函数。请尝试
异步函数waitAndLog(){wait sleep(1000);console.log(2);}