延迟后使用不同的 id 发出并发请求



我想使用从userData对象获得的user_id键发出GET请求。

用于提出请求

var userData = [ { 编号: 1, user_id:"1234", }, { 编号: 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);
    });
}

有很多方法可以做你想做的事情。 真正的问题是,你想做什么?

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);
});

2. 对于 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);
})

最新更新