我有这个 API 调用,但我没有收到我的数据successCallback
按照我发送的顺序。
for (var i = 0; i < data.length; i++) {
$http.post('/api/bla/blabla', $.param(data[i]))
.then(successCallback, errorCallback);
}
var successCallback = function (response) {
/*
receive data in random order.
assume its being send / handled so fast, thats its random
which gets done first.
*/
};
我可以以某种方式等待接收所有数据,然后将其重新排序为原始顺序吗?或者还有其他解决方案。
Use $q.all
以正确的顺序获取所有数据。
var promiseArray = [];
for (var i = 0; i < data.length; i++) {
var dataPromise = $http.post('/api/bla/blabla', $httpParamSerializer(data[i]))
.then (function (response) {
//return data for chaining
return response.data;
})
;
promiseArray.push(dataPromise);
}
$q.all(promiseArray).then(function (dataArray) {
//dataArray will be in original order
//process results here
}).catch (function (errorResponse) {
//log error
});
The promiseArray
将以正确的顺序创建。即使各个 XHR POST 请求可能不会按原始顺序提供,$q
服务将跟踪承诺并以正确的顺序填充数据数组(或解决第一个错误时被拒绝的问题)。
The JSFiddle 上的演示.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)