延迟后

时间:2018-02-03 03:40:39

标签: javascript node.js

我想使用从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);
    });
}

1 个答案:

答案 0 :(得分:1)

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

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