【发布时间】:2017-03-05 12:41:10
【问题描述】:
我正在尝试创建一个使用以下逻辑发送 HTTP 请求的函数:
- 如果有 5 个或更多正在进行的请求,则必须推迟下一个请求,直到其中一个请求完成。只有这样才能处理下一个请求。
- 当响应码不是200时,我想重试请求最多3次。如果重试3次后的响应码仍然不是200,则应该执行错误函数。
我如何知道正在进行的请求数量?我怎样才能等到其中一个完成后才能处理下一个请求?
这是我到目前为止所尝试的。 count 变量是用来统计失败次数的,但是我不知道如何统计挂起的 HTTP 请求:
var count = 0;
function get(url) {
return new Promise(function(resolve, reject) {
var xhttp = new XMLHttpRequest();
xhttp.open("GET", url, true);
xhttp.onload = function() {
if (xhttp.status == 200) {
resolve(JSON.parse(xhttp.response));
} else if (xhttp.status != 200 && count != 3) {
count++;
resolve(JSON.parse(xhttp.response));
} else if {
reject(xhttp.statueText):
} else(count == 3) {
reject("you have reached the maximum number of tries")
}
}
xhttp.onerror = function() {
reject(xhttp.statueText);
};
xhttp.send()
});
}
var promise = get("data/tweets.json);
promise.then(function(tweets) {
console.log(tweets);
};
我怎样才能做到这一点?
【问题讨论】:
-
您有问题吗? Q+A 网站有点必要
-
是的,我的问题是如何在 ES6 中设置待处理的请求!
-
缩进代码发生了什么?
-
您好@AmrAyoub,首先,请缩进您的代码以帮助其他人阅读,其次,您的问题似乎实际上至少有2个问题:a)如何重试失败的HTTP请求,b)如何将传出请求的数量限制为 5。无论如何,您究竟为什么要限制传出请求的数量?
-
@hi Jakub ,对不起,我不知道缩进代码是什么意思 :(
标签: javascript promise ecmascript-6