【发布时间】:2014-06-26 22:55:15
【问题描述】:
我正在编写一个 Angular.js 服务来提取一些 JSON 提要。最初,服务不知道要请求哪些/多少资源;它们依赖于另一个请求返回的 id。
我很头疼将$http 服务请求链接在一起。有没有常用的模式来做到这一点?
我尝试了另一个线程上建议的Array.reduce 技术,但在同步 ID 和请求的数据时遇到了问题。
这是我目前所拥有的。有人有什么建议吗?
aService.factory('dummy', function($http){
// Dummy resources.
var resources = [
'http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js',
'http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js',
'http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js'
];
return {
data: function(callback){
var jquerySources = []
var promiseChain = $http({method: 'GET', url: resources[0]});
var l = resources.length
for (var i = 1; i < l; i++ ){
promiseChain.then(function(data){
jquerySources.push({
url: resources[i],
source: data
});
promise_chain = $http({method: 'GET', url: resources[i]});
if (i === l){
return callback(jquerySources);
}
});
}
}
}
});
谢谢。
【问题讨论】:
-
你真的需要依次加载每个资源吗?如果没有,你能不只是触发多个请求,然后等待所有的承诺得到解决吗?
-
您需要它们顺序执行还是可以并行运行?
-
如果您正在考虑 Promise 链接,您应该查看 async/await。它会让你的生活更轻松
标签: javascript asynchronous promise