javascript - $q.all 然后在解决 promise 之前被调用

标签 javascript angularjs q

我有一个MainService,它调用default方法,该方法返回一个promise

default: (function() {
         var d = $q.all([
            service1.get(onFirstSuccess),
            service2.ret(onSecondSuccess)
         ]);

         function onFirstSuccess(){} 
         function onSecondSuccess(){}  
}); 

我正在从另一个服务调用此默认方法。

MainService.default().then(function(){
    console.log("this is getting called before onSecondSuccess");
});

问题是在 $q.all 完成之前,then 函数在这里被触发。

最佳答案

default: (function() {
    var d = $q.all([
      service1.get(onFirstSuccess),
      service2.ret(onSecondSuccess)
    ]);

  function onFirstSuccess(){} 
  function onSecondSuccess(){}          
   return d;
  }); 

也许你应该在默认函数中返回d

关于javascript - $q.all 然后在解决 promise 之前被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38127401/

相关文章:

javascript - 将响应传递给 $q promise 的第二个 `then`

javascript - Javascript 中的函数式编程返回值

javascript - 在 console.log 中打印 Javascript 对象时的不同行为

javascript - 将javascript变量传递给 Angular js中的ng-click事件

javascript - 在加载模板时调用指令方法

angularjs - 使用 $http 和 $q 获取数据

javascript - JS Q 库 - 延迟错误捕获

javascript - Fabric.JS 和 AngularJS – 0 和 '0' 之间的区别

javascript - 使用使用 inboxsdk 创建的自定义按钮发送邮件?

javascript - AngularJS - 如何处理 Controller /服务中所需数据的长时间运行请求