(async()=> {})(); vs回调

时间:2019-07-12 21:20:40

标签: javascript callback async-await

async function test() {
  for (var i = 0; i < balance; i++) {      
    (async () => {            
      var a = await this.test1(i);
      var b = await this.test2(a);
      var c = await this.test3(b);  
      this.doThis(a,b,c);                              
    })();
  }
}

因此,我得出的结论是(async () => {})();与良好的旧回调非常相似

function test() {
  for (var i = 0; i < balance; i++) {      
    test1().call().then((a) => {           
      test2().call(a).then((b) => {
        test3().call(b).then((c) => {
           this.doThis(a,b,c);   
         });
      });
    });
  }
}

这是对的吗?在性能方面,我发现它们大致相同。

  1. 它们有什么区别吗?
  2. 我应该遵循哪种模式?

我想使用第一个async/await,但是如果我取出(async () => {})();,我发现在UI中呈现内容的速度比第二个要慢。

1 个答案:

答案 0 :(得分:1)

  

它们有什么区别吗?

您应该从return回调中then,以便正确传播错误。除此之外,它们基本上是相等的。

  

我应该遵循什么模式?

它们都是fire-and-forget calls,在它们上面您不应忘记  处理错误!

  

我想和async/await一起使用,但是如果我取出(async () => {})();会发现它变慢了

当然,因为那样的话您await处于循环中,因此它将变得有序。