我试图使用$ q.defer,$ q.all和promises来等待http请求列表
我使用此代码调用$ q.all
$q.all(promises).then(function(data) {
console.log('All promises have resolved', data);
var retVal = Utils.DoStep2();
console.log(retVal);
});
这个函数永远不会被调用,我检查过并且为所有值调用$ http.get。
var deferred = $q.defer();
$http.get(requestUrl).
then(function (data) {
var p = {
data: data,
name: name
};
pData.push(p);
deferred.resolve(p);
return p;
})
.catch(function (status) {
deferred.reject(status);
});
promisesList.push(deferred.promise);
使用console.log在DoStep2上打印pData的长度以及pData 我得到的是0和看起来像0对象的长度,但当我打开它时,看起来所有对象都在每个特定调用的$ http.get调用中被初始化,这使我确信$ http.get响应收到了,这是一个有效的回应。
此外,$ all根本没有调用可能出错的地方?
感谢您的协助
答案 0 :(得分:1)
确定管理以修复它 我使用了服务函数getService()并且这个函数返回了promise然后在每个调用中我添加了getService()promise返回到promisesList这个列表我等待使用$ all并且它工作了 非常感谢您的帮助。