首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Node.js (JavaScript)中等待?我需要暂停一段时间

如何在Node.js (JavaScript)中等待?我需要暂停一段时间
EN

Stack Overflow用户
提问于 2013-01-10 09:37:23
回答 17查看 975.7K关注 0票数 570

我正在为个人需求开发一个控制台脚本。我需要能够暂停一段较长的时间,但根据我的研究,Node.js没有办法按要求停止。经过一段时间后,读取用户信息变得越来越困难……我看过一些代码,但我相信他们必须在他们的内部有其他代码才能工作,例如:

代码语言:javascript
复制
    setTimeout(function() {
    }, 3000);

但是,我需要此行代码之后的所有内容在一段时间后执行。

例如,

代码语言:javascript
复制
    // start of code
    console.log('Welcome to my console,');

    some-wait-code-here-for-ten-seconds...

    console.log('Blah blah blah blah extra-blah');
    // end of code

我也见过像这样的东西

代码语言:javascript
复制
    yield sleep(2000);

但是Node.js没有意识到这一点。

我如何才能实现这种延长的暂停?

EN

回答 17

Stack Overflow用户

发布于 2018-03-07 04:47:32

没有任何依赖关系的最短解决方案:

代码语言:javascript
复制
await new Promise(resolve => setTimeout(resolve, 5000));
票数 483
EN

Stack Overflow用户

发布于 2013-01-10 09:44:54

将您想要执行的代码放在setTimeout回调中的延迟之后:

代码语言:javascript
复制
console.log('Welcome to My Console,');
setTimeout(function() {
    console.log('Blah blah blah blah extra-blah');
}, 3000);
票数 158
EN

Stack Overflow用户

发布于 2017-01-14 02:56:37

在节点7.6.0或更高版本上

节点原生支持等待:

代码语言:javascript
复制
const sleep = (waitTimeInMs) => new Promise(resolve => setTimeout(resolve, waitTimeInMs));

然后,如果您可以使用异步函数:

代码语言:javascript
复制
await sleep(10000); // sleep for 10 seconds

或者:

代码语言:javascript
复制
sleep(10000).then(() => {
  // This will execute 10 seconds from now
});

在较旧的Node版本上(原始答案)

我想要一种在Windows和Linux下都能工作的异步睡眠,而不会因为长时间的while循环而占用我的CPU。我试过睡眠包,但它不能安装在我的Windows机器上。我最终使用了:

https://www.npmjs.com/package/system-sleep

要安装它,请键入:

代码语言:javascript
复制
npm install system-sleep

在代码中,

代码语言:javascript
复制
var sleep = require('system-sleep');
sleep(10*1000); // sleep for 10 seconds

就像一种护身符。

票数 90
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14249506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档