【问题标题】:Difference between Sequential and Parallel executing in $q$q 中顺序执行和并行执行的区别
【发布时间】:2017-05-20 22:27:58
【问题描述】:

在这两种情况下只执行一个异步操作。


  • 但是$q 的句柄在运行时是顺序调用还是并行调用?
  • 让我简要解释一下 Angular $q 中顺序执行和并行执行之间的区别

【问题讨论】:

    标签: angularjs typescript angular-promise q angularjs-q


    【解决方案1】:

    并行执行承诺:

    var promise1 = promiseAPI(params1);
    var promise2 = promiseAPI(params2);
    
    var promise1and2 = $q.all([promise1, promise2]);
    

    要依次执行 Promise,返回下一个 Promise 给第一个 Promise 成功处理程序:

    var promise1 = promiseAPI(params1);
    
    var promise1then2 = promise1.then(function() {
        var promise2 = promiseAPI(params2);
        //return to chain
        return promise2;
    });
    

    因为调用 Promise 的 .then 方法会返回一个新的派生 Promise,所以很容易创建一个 Promise 链。可以创建任意长度的链,并且因为一个promise 可以用另一个promise 来解决(这将进一步推迟它的解析),可以在任何时候暂停/推迟promise 的解析链条。

    -- AngularJS $q Service API Reference -- Chaining Promises.

    【讨论】:

      【解决方案2】:

      并行执行是不等待前一个进程完成的东西,顺序是一个进程一个接一个地执行的东西。

      $q服务用于异步调用(并行执行|承诺处理),默认并行执行,不支持顺序执行。 如果您想要顺序执行,则必须手动处理它,这意味着在从一个呼叫获得响应后,您再拨打另一个呼叫。

      var promise;
      promise.then(fun(){
         var promise;
         promise.then(fun(){
         })
      })
      

      【讨论】:

        猜你喜欢
        • 2018-06-16
        • 2017-08-23
        • 1970-01-01
        • 2014-09-07
        • 1970-01-01
        • 2015-10-28
        • 2020-06-05
        • 1970-01-01
        相关资源
        最近更新 更多