gpt4 book ai didi

javascript - 重复 HTTP 请求,直到返回 404 错误

转载 作者:可可西里 更新时间:2023-11-01 16:21:27 26 4
gpt4 key购买 nike

我想发送 http 请求,直到其中一个以 error 404 响应为止。

有 21 页,我有这样的内容:

_getAll = function () {

var promises = [];
var pages = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21];
angular.forEach(pages, function (page) {
var deffered = $q.defer();
$http({
url: 'http://api.tvmaze.com/shows?page=' + page,
method: 'GET'
}).
success(function (data) {
console.log("OK")
deffered.resolve(data);
}).
error(function (error) {
deffered.reject(error);
console.log(error.status);
});
promises.push(deffered.promise)
})
return $q.all(promises);
},

但如果我尝试获取 http://api.tvmaze.com/shows?page=22它返回 404 错误

那么是否有一个选项可以发出 http 请求,直到其中一个返回 404。在循环时还是以其他方式?

最佳答案

这些调用是异步的,因此 while 循环会尝试在几毫秒内调用 1000 多个页面,甚至在您加载第一页之前。在加载下一页之前,您需要等待每个页面完成。

实现此目的的一种方法是创建一个函数来获取页面,并在每次成功加载页面时使用下一个页码触发它。一旦遇到错误,就会触发最终成功回调并将数据传回。

_getAll = function(callback) {

var pageData=[];

function getPage(page) {
$http({
url: 'http://api.tvmaze.com/shows?page=' + page,
method: 'GET'
}).
success(function (data) {
pageData.push(data);
//get next page
getPage(page + 1);
console.log("OK")
}).
error(function (error) {
//Hit an error. All done. Trigger callback.
callback(pageData);
console.log(error.status);
});
}

//get first page
getPage(0);
}

//usage:

_getAll(function(data){
//this function will trigger once we get an error
//data will be an array of all of the pages data
console.log(data);
});

关于javascript - 重复 HTTP 请求,直到返回 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32920677/

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