【发布时间】:2019-07-24 15:01:47
【问题描述】:
我有以下循环:
while (true) {
await f();
await g();
}
其中f和g定义如下:
async function f() {
await Promise.all([SOME_REQUEST_F, sleep(1000)])
}
async function g() {
await Promise.all([SOME_REQUEST_G, sleep(5000)])
}
另外sleep定义如下:
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
我的意图是让SOME_REQUEST_F 每秒钟等待一次,SOME_REQUEST_G 每五秒钟等待一次,因此将它们包装在f 和g 中。
但是,目前g 正在阻止循环内重新等待f。
如何定义sleep,如果在g中使用,它会阻止g的重新执行,而不是f的重新执行?有没有更好的方法来做我想做的事?
【问题讨论】:
标签: javascript async-await es6-promise