带有异步和等待的瀑布
Waterfall with async and await
我想用 async 和 await 实现瀑布。
我经历了 this 尝试了一些实践
主要目的是如果上述任何一个异步拒绝错误,我确实想调用异步函数。
var cont = 1;
function signin (){
console.log(cont);
// i am doing some async
return new Promise((a,b)=>{
if((++cont) === 4){
setTimeout(1000*cont,b,'ab');
} else {
setTimeout(1000*cont,a,'ab');
}
})
}
async function main() {
try {
await signin;
await signin;
await signin;
await signin;
await signin;
await signin;
await signin;
return signin();
} catch(er){
return er;
}
}
main()
在上面,没有任何东西按预期工作。
我的预期输出是什么
1
2
3
4
在第四个之后它应该一路突破。不应调用其余的登录尝试。
所有签到必须顺序执行。就像瀑布一样。
有什么帮助吗?
2 项您需要更改的内容:
- setTimeout函数的参数
调用带括号的登录函数,例如:await signin()
var cont = 1;
function signin (){
console.log(cont);
// i am doing some async
return new Promise((resolve, reject)=>{
if((++cont) === 4){
setTimeout(reject(cont),1000*cont);
} else {
setTimeout(resolve(cont),1000*cont);
}
})
}
async function main() {
try {
await signin();
await signin();
await signin();
await signin();
await signin();
await signin();
await signin();
return signin();
} catch(er){
console.log("error: " +cont);
return er;
}
}
main()
我想用 async 和 await 实现瀑布。
我经历了 this 尝试了一些实践
主要目的是如果上述任何一个异步拒绝错误,我确实想调用异步函数。
var cont = 1;
function signin (){
console.log(cont);
// i am doing some async
return new Promise((a,b)=>{
if((++cont) === 4){
setTimeout(1000*cont,b,'ab');
} else {
setTimeout(1000*cont,a,'ab');
}
})
}
async function main() {
try {
await signin;
await signin;
await signin;
await signin;
await signin;
await signin;
await signin;
return signin();
} catch(er){
return er;
}
}
main()
在上面,没有任何东西按预期工作。 我的预期输出是什么
1
2
3
4
在第四个之后它应该一路突破。不应调用其余的登录尝试。
所有签到必须顺序执行。就像瀑布一样。
有什么帮助吗?
2 项您需要更改的内容:
- setTimeout函数的参数
调用带括号的登录函数,例如:await signin()
var cont = 1; function signin (){ console.log(cont); // i am doing some async return new Promise((resolve, reject)=>{ if((++cont) === 4){ setTimeout(reject(cont),1000*cont); } else { setTimeout(resolve(cont),1000*cont); } }) } async function main() { try { await signin(); await signin(); await signin(); await signin(); await signin(); await signin(); await signin(); return signin(); } catch(er){ console.log("error: " +cont); return er; } } main()