javascript - timer/promises.setTimeout 延迟不适用于功能
问题描述
我是 Node v16 的新手,看起来我之前在 Node v13 中所做的事情由于这个额外的 import 语句而不再起作用?我试图将调用此函数延迟 1 分钟,但是当我运行此函数时,它似乎会一遍又一遍地立即调用该函数或从不执行。如何恢复我的 1 分钟延迟?我尝试了以下所有方法:
setTimeout((1 * 60 * 1000), doSomething());
setTimeout(doSomething(), (1 * 60 * 1000));
setTimeout(() => { doSomething() }, 1 * 60 * 1000);
(这个从来没有执行过)
setTimeout(doSomething, (1 * 60 * 1000));
(这个从来没有执行过)
注意我在这里也使用了 Node v16 的 import 语句:
const { setTimeout, } = require('timers/promises');
并且因为这个原因,打电话await setTimeout(4000);
似乎工作正常
我确定这是因为 timers/promises.setTimeout 与 setTimeout 不同,但我不明白如何在代码中同时使用这两者?
我希望能够在我的脚本中同时使用这两个东西。
解决方案
您可以同时使用:
const { setTimeout: setTimeoutPromiseBased } = require('timers/promises');
setTimeout(function() {
console.log('Hello, traditional world');
}, 1000);
(async function() {
await setTimeoutPromiseBased(2000);
console.log('Hello, promisified world');
})();
上面使用别名语法进行解构。否则,您最终会用启用承诺的版本覆盖全局“setTimeout”。
推荐阅读
- kdb - 可以使用除kdb之外的其他时间序列数据库
- angular - Angular Unit Test - 按模块或文件夹运行
- javafx - JavaFX 一个组件窗口调整大小和子窗口自动调整大小
- linux-kernel - 如何在 yocto 中编译 linux-raspberrypi 内核?
- regex - 范围 0-200.0000 的正则表达式(包括 0 和 200)
- python - 如何获得向量。从使用 argmax 的二维 numpy 数组?
- c# - 处理第三方代码,C# 解密
- python - 如何使用 svgwrite 模块进行换行?
- php - 为什么我们要编写加载视图最后一个代码变量 codeigniter
- grafana - Grafana 总结面板