我有超过10个函数同时被调用。我想同步它们。我想在没有超时的情况下完成它,这意味着当前一个函数完成时,下一个函数将被执行。有没有一个干净利落的方法?
发布于 2019-11-18 23:26:28
只要在所有东西上使用await,如果它返回一个实际值,它将立即解析,否则它将等待解析:
function fn1() {
return 10;
}
function fn2() {
return new Promise(r => setTimeout(r, 1000, 20));
}
function fn3() {
return 30;
}然后:
async function main() {
console.log(await fn1()); // 10
console.log(await fn2()); // 20, after 1sec
console.log(await fn3()); // 30
}
main();在这种情况下,您还可以拥有一个函数数组,并循环遍历它,始终使用await,而不关心函数本身(如果它是async或其他什么)。
另外,我只是出于演示的目的使用了超时,因为我没有任何真正的异步代码,我知道你不想使用它;它可能是一个http请求(fetch),基本上任何东西都是async。
发布于 2019-11-18 23:09:25
你需要提供你的需求。但是,如果Async解决了您的问题,您可以使用它
发布于 2019-11-18 23:13:07
function f1(cb){
cb();
}
function f2(cb){
cb();
}
function f3(cb){
cb();
}
...etc
then...
f1(f2(f3(...etc)));这不是更好的方法...但这对学习什么是回调地狱很有帮助
https://stackoverflow.com/questions/58917504
复制相似问题