如何在 `while (true)` 循环中每隔 `n` 和 `m` 秒调用两个异步函数?
How to call two async functions every `n` and `m` seconds within a `while (true)` loop?
我有以下循环:
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
的重新执行?有没有更好的方法来做我想做的事?
改为使用两个 while
循环:
(async () => {
setTimeout(async () => {
while (true) {
await f();
}
});
while (true) {
await g();
}
})();
那里的 setTimeout
需要同时允许 while
到 运行,这样一个的初始化就不会阻止另一个的启动。
我有以下循环:
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
的重新执行?有没有更好的方法来做我想做的事?
改为使用两个 while
循环:
(async () => {
setTimeout(async () => {
while (true) {
await f();
}
});
while (true) {
await g();
}
})();
那里的 setTimeout
需要同时允许 while
到 运行,这样一个的初始化就不会阻止另一个的启动。