Angular promises `all` 方法 returns `undefined`
Angular promises `all` method returns `undefined`
我已经使用 $q
服务与 Angular 建立了承诺。
var get = function() {
var defer = $q.defer();
setTimeout(function() {
defer.resolve('test');
}, 1000);
return defer.promise;
}
当我调用这个函数时,它 returns 预期的数据如下:
var promise1 = api.get().then(function(data){
console.log(data); //logs test
});
var promise2 = api.get().then(function(data){
console.log(data); //logs test
});
但是当我使用all
方法时,我两次得到一个包含undefined
的数组。
$q.all([promise1, promise2]).then(function(data){
console.log(data); //logs [undefined, undefined];
});
我是不是漏掉了什么?
您必须return来自回调的数据
这样试试
var promise1 = function(){
return api.get().then(function(data){
return data;
});
}
一定是这样的:
var promise1 = api.get();
var promise2 = api.get();
那么,promise1和promise2的类型是"promise",你可以在$q.all().
中使用它们
$q.all([promise1, promise2]).then(function(data){
console.log(data); //logs ['test', 'test'];
});
我已经使用 $q
服务与 Angular 建立了承诺。
var get = function() {
var defer = $q.defer();
setTimeout(function() {
defer.resolve('test');
}, 1000);
return defer.promise;
}
当我调用这个函数时,它 returns 预期的数据如下:
var promise1 = api.get().then(function(data){
console.log(data); //logs test
});
var promise2 = api.get().then(function(data){
console.log(data); //logs test
});
但是当我使用all
方法时,我两次得到一个包含undefined
的数组。
$q.all([promise1, promise2]).then(function(data){
console.log(data); //logs [undefined, undefined];
});
我是不是漏掉了什么?
您必须return来自回调的数据
这样试试
var promise1 = function(){
return api.get().then(function(data){
return data;
});
}
一定是这样的:
var promise1 = api.get();
var promise2 = api.get();
那么,promise1和promise2的类型是"promise",你可以在$q.all().
中使用它们$q.all([promise1, promise2]).then(function(data){
console.log(data); //logs ['test', 'test'];
});