sleep()的JavaScript版本是什么?

sleep()的JavaScript版本是什么?,第1张

sleep()的JavaScript版本是什么? 2017年— 2019年更新

自2009年提出这个问题以来,Javascript取得了长足的发展。现在,所有其他答案都已过时或过于复杂。这是当前的最佳做法:

function sleep(ms) {  return new Promise(resolve => setTimeout(resolve, ms));}async function demo() {  console.log('Taking a break...');  await sleep(2000);  console.log('Two seconds later, showing sleep in a loop...');  // Sleep in loop  for (let i = 0; i < 5; i++) {    if (i === 3)      await sleep(2000);    console.log(i);  }}demo();
就是这个。
await sleep(<duration>)

还是单线:

await new Promise(r => setTimeout(r, 2000));

注意,

  1. await只能在以async关键字为前缀的函数中执行,或者在某些环境中(例如Chrome DevTools控制台或Runkit)在脚本的顶层执行。
  2. await仅暂停当前async功能

两个新的Javascript功能帮助编写了此“睡眠”功能:

  • Promises,是ES2015(又名ES6)的本机功能。我们还在睡眠功能的定义中使用了箭头功能。
  • 该async/await功能使代码可以明确地等待承诺的达成(解决或拒绝)。

兼容性

  • 诺言在Node v0.12 +中受支持,并且在浏览器(IE除外)中得到广泛支持
  • async/ await降落在V8中,自Chrome 55(于2016年12月发布) 以来已默认启用
  • 它于2016年10月降落在Node 7上
  • 并于2016年11月登陆Firefox Nightly
    如果你正在使用节点年纪比7(已经达成了一些奇怪的原因生命的尽头),或瞄准旧的浏览器,async/ await仍然可以通过使用巴别塔(一种工具,将transpile的Javascript +新功能集成到普通的旧的Javascript) ,带有transform-async-to-generator插件。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4918951.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存