在基于数组角色的角度上承诺多个ajax请求
我正在按角度顺序执行多个ajax调用。我想实现的工作与$.ajax
工作正常,但是当我使用角度实现时,我正在使用$http
作为服务器请求,它不起作用。我想知道,这两个都返回承诺对象,然后为什么它不能正常工作。在基于数组角色的角度上承诺多个ajax请求
使用$就
shoppingList.split(",").reduce(function(resultPromise, shoppingItem) {
return resultPromise.then(function(result) {
pro = $.ajax('/items/'+shoppingItem);
return pro.then(function(res) {
console.log(result);
result.push(new Item(res.label,res.price));
return result;
});
});
}, $.when([])).then(completeCallback);
见工作小提琴 - JSFiddle
采用了棱角分明的$ HTTP
function fetchDataDayWise(dateRanges,completeCallback) {
return dateRanges.reduce(function(resultPromise, dt) {
return resultPromise.then(function(resultData) {
machinePromise = getData();
return machinePromise.then(function(data) {
if(data && data.length > 0)
{
resultData = resultData.concat(data);
}
console.log(resultData);
return resultData;
});
});
}, $.when([])).then(completeCallback);
}
var dateRanges = [1,2,3,4]
function setData(data) {
console.log("data",arguments);
}
fetchDataDayWise(dateRanges,setData);
您可以在控制台中看到。在JSFiddle中,您将在Angular plunkr中获取数组项,并返回对象。我猜这是诺言对象。
任何帮助,将不胜感激。
我已付出你的plnkr希望这将有助于
http://plnkr.co/edit/VWJMNU?p=preview
function fetchDataDayWise(dateRanges, compleCallback) {
var arrPromise = [];
dateRanges.reduce(function (dt) {
arrPromise.push(getData());
});
$q.all(arrPromise).then(compleCallback);
}
这将工作,但我希望按顺序服务器调用不是一次。我希望在获取数据后尽快更新UI,并且其他调用将同时运行。 –
你不希望所有的请求在渲染UI之前复出尽快单个请求到来你想要渲染UI ..我是对吗? – dhavalcengg
我已经更新了我的plnkr .. – dhavalcengg
在你的服务,你用$ http.get,这将返回一个承诺这是你所看到的物体,让你的从它的值,你需要有(你的情况):
deferred.resolve(data.data);
,而不是
deferred.resolve(data);
希望这会有所帮助。如果您还有其他问题,我会很乐意回答。
更新:
这不是你的代码完全相同,但它会给你的如何实现连续通话的例子。
var prevPromise = $q.resolve(); prevPromise = prevPromise.then(function() { this.someValue= value; //array of databases containing queryresults return this.function(req, res); }.bind(this));
那么,在角度服务,你可以看到我只绑定成功的方法,所以数据将工作。在使用$ http的.then方法的情况下,我需要有data.data。尽管如此,我仍然尝试使用data.data,但它不工作。 –
你是对的,我已经更新了我的答案 –
始终在SO上发布相关代码。这不是来自有经验的用户的期望。 – Satpal
@Satpal对不起,我只是稍微修改了一下。 –
同意以上 - 我看到这越来越多,并忽略越来越多的问题... –