我正在为个人需求开发一个控制台脚本.我需要能够暂停更长的时间,但是,根据我的研究, node .js无法按要求停止.经过一段时间后,阅读用户信息变得越来越困难...我见过一些代码,但我相信他们必须有其他代码才能工作,比如:

    setTimeout(function() {
    }, 3000);

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

例如,

    // 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

我也见过类似的事情

    yield sleep(2000);

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

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

推荐答案

Update Jan 2021:您甚至可以使用--experimental-repl-await标志在 node REPL interactive中执行此操作

$ node --experimental-repl-await
> const delay = ms => new Promise(resolve => setTimeout(resolve, ms))
> await delay(1000) /// waiting 1 second.

一个老问题的新答案.如今(2017年1月至2019年6月),情况变得容易多了.你可以用new async/await syntax.

async function init() {
  console.log(1);
  await sleep(1000);
  console.log(2);
}

function sleep(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}

要使用async/await开箱即用而不安装和插件,必须使用node-v7或node-v8,使用--harmony标志

Update June 2019:通过使用最新版本的NodeJS,您可以直接使用它.不需要提供命令行参数.就连谷歌Chrome现在也支持它.

Update May 2020:

await sleep(1000)
function sleep(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}

The proposal is in stage 3

More info:

Javascript相关问答推荐

为什么我的第二个OnClick Isloading值在TEK查询Mutations 查询中不起作用?

我的YouTube视频没有以html形式显示,以获取免费加密信号

使用useParams路由失败

为什么使用MAX_SAFE_INTEGER生成随机整数时数字分布不准确?

如何保持子画布元素的1:1宽高比?

Express.js:使用Passport.js实现基于角色的身份验证时出现太多重定向问题

获取表格的左滚动位置

模块与独立组件

如何在mongoose中链接两个模型?

在react js中使用react—router—dom中的Link组件,分配的右侧不能被 destruct ''

使用JQuery单击元素从新弹出窗口获取值

400 bad request error posting through node-fetch

向数组中的对象添加键而不改变原始变量

try 将Redux工具包与MUI ToggleButtonGroup组件一起使用时出错

使每个<;li>;元素的 colored颜色 与随机生成的 colored颜色 列表不同(不重复

使用jQuery find()获取元素的属性

FindByIdAndUpdate在嵌套对象中创建_id

如何使用fltter_js将对象作为参数传递给javascrip?

找不到处于状态的联系人

如何为两条动态路由创建一个页面?