我正试图通过使用链式承诺来找到解决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()
答案 0 :(得分:2)
在链的每个部分中,您需要将要传递的数据返回到链的下一部分。
.then(function(prevThenReturn) {
return 'a';
}).then(function(thisEqualsA) {
console.log(thisEqualsA)
})