繁体   English   中英

for循环,回调,超时一起使用,超时似乎不起作用

[英]for-loop, callback, timeout together, timeout seems not working

我有一个用例,我需要一起使用for循环,webservice回调,超时,然后我发现超时似乎不起作用,这是代码:

function handler5Min(i){
            if (i < sites.length){
                var site5MinPath = '/v3/sites/' + sites[i].siteid + '/data?fields=Wh_sum&tz=US/Pacific&gran=daily';
                var end = moment().format('YYYY-MM-DDThh:mm:ss');
                var start = moment().subtract(2, 'days').format('YYYY-MM-DDThh:mm:ss');
                site5MinPath = site5MinPath + '&start=' + start + '&end=' + end;

                var options = locusUtil.setOptions(site5MinPath, globalToken.token.access_token);
                request(options, function(err, result, body){
                    if (err){
                        log.error(err + ' path: ' + site5MinPath);
                    }
                    if (body){
                        var data = JSON.parse(body).data;
                        log.info('5 min data: ' + JSON.stringify(body, null, 4));
                        setTimeout(handler5Min(i+1), 5000);
                    }
                })
            }
            else{

            }
        }
        handler5Min(0);

请求正在发送Web服务请求,我需要等待直到得到响应,然后我移至下一个site []项目以进行下一次调用,而且API提供商将请求限制为每秒2,因此我在那里有一个setTimeout,但似乎没有发生超时。

而不是做

setTimeout(handler5Min(i+1), 5000);

setTimeout(handler5Min, 5000, i + 1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM