我想用异步和等待来实现瀑布。
我经历了this尝试了一些手
主要目的是如果以上异步中的任何一个拒绝错误,我想要调用异步函数。
map2
在上面,没有任何工作按预期进行。 我期望的输出输出是什么
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()
第四次之后应该一路破裂。其他尝试登录的行为不应该被召唤。
所有登录必须连续执行。就像瀑布一样。
任何帮助?
答案 0 :(得分:0)
你需要改变的两件事:
使用paranthesis调用signin函数,例如: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()