假设您有以下代码:
var callNo1 = $http(...).then(function (response1) {
var callNo2 = $http(...).then(function (response2) {
return [response1.data, response2.data];
});
return callNo2;
}).then(function (result) {
console.log(result);
});
由于callNo2
是一个承诺,因此[response1.data, response2.data]
的数组将记录到控制台。我想要实现的是获得callNo2
承诺的引用。所以我的问题是:有没有办法通过return语句获取对内部promise的引用,以便可以通过then参数访问它。
P.S。
以下方式将被视为作弊:
var callNo1 = $http(...).then(function (response1) {
var callNo2 = $http(...).then(function (response2) {
return [response1.data, response2.data];
});
return { callNo2: callNo2 };
}).then(function (result) {
console.log(['Do whatever required with result.callNo2', result.callNo2]);
});
答案 0 :(得分:1)
为此使用回调函数。看:
function call1(callback){
return $http(...).then(function (response1) {
var callNo2 = $http(...).then(function (response2) {
callback(response1.data, response2.data);
});
});
}
function calling(){
call1(function(data1, data2){
console.log(data1, data2);
})
}
在call1的函数中,运行call2并返回promisse。当call2完成时,调用callback。