我想使用从userData对象获取的user_id键来发出GET请求。
发出请求
var userData = [ { id:1, user_id:' 1234', }, { id:2, user_id:' 123454', }, 。 。 900个企业 ]
abc.com?user_id = 1234
延迟6s
abc.com?user_id = 123454
下一次请求延迟6s ...........
在一个间隔后连续的user_id,我使用的是setInterval函数,但在发出请求时,user_id没有以相同的顺序获取。
如何实现这一目标?
function checkStatus(userData) {
userData.map(function(n) {
var requestLoop = setInterval(function() {
request({
url: "abc.com?user_id="n.user_id,
n.user_id,
method: "GET"
}, function(error, response, body) {
if (error) {
return error;
}
});
}, 60000);
});
}
答案 0 :(得分:1)
有很多方法可以做你想做的事。真正的问题是,你想做什么?
userData
中的每个条目,请运行GET
请求,但仅在上一次请求后延迟6 secs
之后。function query(n) {
request({
url: "abc.com?user_id=" + n.user_id,
n.user_id,
method: "GET"
}, function(error, response, body) {
if (error) {
return error;
}
});
}
userData.forEach(function (n, i) {
setTimeout(query, 6000 * i, n);
});
userData
中的每个条目,运行多个 GET
请求,每个请求在上一个请求之后的6秒后延迟。function query(n) {
request({
url: "abc.com?user_id=" + n.user_id,
n.user_id,
method: "GET"
}, function(error, response, body) {
if (error) {
return error;
}
// ...
if (shouldRepeatCondition) {
// keep repeating
setTimeout(query, 6000, n);
}
});
}
userData.forEach(function (n, i) {
setTimeout(query, 6000 * i, n);
})