带有异步和等待的瀑布

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()