在 nodejs 中有时要遇到运行一个请求时不成功,希望能让它停顿一个再进行相同的操作。如果使用 setTimeout 和 setInterval 你观察其执行时会发现它并不会是我们想要的间隔时间性的执行,而是一路不停歇的往下跑,就在昨天也遇到这种问题。
其实这也是 nodejs 当中的一个隐藏坑,nodejs 本身就是异步处理的机制,所以你直接用 setTimeout 和 setInterval 其效果也如是。
那么如何来解决呢?还是之前所记录过的 Promise 。
例如 setTimeout 的实例
private async _sleep(time: number) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve();
}, time);
});
}
那么如何调用它呢?不用再写了吧。那么 setInterval 呢?也和 setTimeout 一样的写法啊。只是说此时的 setTimeout 变成了 setInterval 而易啊
private async _sleep(time: number) {
return new Promise(function (resolve, reject) {
setInterval(function () {
resolve();
}, time);
});
}