Ato*_*nal 6 javascript async-await es6-promise
我有以下循环:
while (true) {
await f();
await g();
}
Run Code Online (Sandbox Code Playgroud)
其中f和g定义如下:
async function f() {
await Promise.all([SOME_REQUEST_F, sleep(1000)])
}
async function g() {
await Promise.all([SOME_REQUEST_G, sleep(5000)])
}
Run Code Online (Sandbox Code Playgroud)
也sleep定义如下:
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
Run Code Online (Sandbox Code Playgroud)
我的意图是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();
}
})();
Run Code Online (Sandbox Code Playgroud)
在setTimeout有需要允许两个whiles到同时运行,这样一个初始化不从开始阻止其他。