gpt4 book ai didi

angularjs 按顺序链接http post

转载 作者:行者123 更新时间:2023-12-01 23:31:04 25 4
gpt4 key购买 nike

在我的应用程序中,我将数据存储在本地存储中并在后台触发异步 http 发布。成功发布后,发布的数据将从本地存储中删除。当http post在处理中时,可能会有更多的数据添加到本地存储,所以我需要排队post并顺序处理它,因为我需要等待本地存储从成功的post中清除。应递归调用该任务,直到本地存储中有数据为止。

taskQueue: function () {
var deferred = $q.defer();
queue.push(deferred);
var promise = deferred.promise;

if (!saveInProgress) {
// get post data from storage
var promises = queue.map(function(){$http.post(<post url>, <post data>).then(function(result){
// clear successful data
deferred.resolve(result);
}, function(error){
deferred.reject(error);
})
})

return $q.all(promises);
}

作为有 Angular 的新手,我在上面的代码不是顺序的方面遇到了问题。我怎样才能实现我的意图?队列长度未知,并且队列长度随着进程的进行而增加。如果这是重复的,请指出其他答案。

最佳答案

Async.js 听起来是个好主意,但如果您不想使用库...

$q.all 将批处理一组请求并同时触发它们,并在数组中的所有 promise 都解析时解析 - 这不是您想要的。

要从数组中按顺序调用 $http,请执行此操作......

var request0 = $http.get('/my/path0');
var request1 = $http.post('/my/path1', {data:'fred'});
var request2 = $http.get('/my/path2');
var requestArray = [];

然后...

requestArray.push(request0);
requestArray.push(request1);
requestArray.push(request2);

然后...

requestArray[0].then(function(response0) {
// do something with response0
return requestArray[1];
}).then(function(response1) {
// do something with response1
return requestArray[2];
}).then(function(response2) {
// do something with response2
}).catch(function(failedResponse) {
console.log("i will be displayed when a request fails (if ever)", failedResponse)
});

关于angularjs 按顺序链接http post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35715660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com