在AngularJS中检索链式承诺中的返回数据的难度

时间:2015-01-20 10:42:57

标签: angularjs asynchronous angular-promise

我正试图通过使用链式承诺来找到解决AngularJS异步特性的方法。

当有多个链时,我很难获得返回数据。在下文中,function1()会返回延迟承诺 (output1),我希望在函数step2()step3()中传递这些承诺。这样做的方法是什么?

dataList.get().$loaded()
    .then(function step1() { initCanvas(); return function1() })
    .then(function step2(output1) { function2(output1); })
    .then(function step3(output1) { function3(output1); $scope.loading = false; })
    .catch(function(error) {
      window.alert("Error: " + error)
      $scope.loading = false;
});//dataList()

dataList.get().$loaded()
        .then(function step1() { initCanvas(); return function1() })
        .then(function step2(output1) { function2(output1); return output1;}) // add return statement!!
        .then(function step3(output1) { function3(output1); $scope.loading = false; })
        .catch(function(error) {
          window.alert("Error: " + error)
          $scope.loading = false;
    });//dataList()

1 个答案:

答案 0 :(得分:2)

在链的每个部分中,您需要将要传递的数据返回到链的下一部分。

.then(function(prevThenReturn) {
     return 'a';
}).then(function(thisEqualsA) {
    console.log(thisEqualsA)
})