在 AngularJS 中难以检索链式承诺中的 return 数据

Difficulty in retrieving the return data in chained promises in AngularJS

我正在尝试通过使用链式承诺找到解决 AngularJS 异步性质的方法。

但是,当有多个链时,我很难获得 return 数据。在下面,function1() returns 一个 deferred promise (output1),我想在函数 step2() 和 [=17] 中传递=].有什么办法吗?

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

在链的每个 .then 部分,您需要 return 将您想要的数据传递到链的下一部分。

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