突破包含异步操作的无限循环

时间:2020-06-09 12:01:24

标签: javascript node.js

我需要打多个电话。网址中唯一更改的参数是末尾的数字。因此,基本上我需要某种循环并不断触发get调用。 get调用一旦完成将触发回调。回调将检查响应的特定文本。如果它与某个字符串匹配,则需要中断循环并结束程序。据我了解,循环将继续运行,而不必等待任何异步代码完成并调用回调。

简而言之,我需要检查get呼叫响应中是否存在某些字符串。一旦在任何响应中找到我的字符串,我就必须停止拨打电话。

我对javascript和nodeJS相当陌生。任何帮助都会很棒。

/* Simple Hello World in Node.js */
var https = require('https');
var url="https://jsonmock.hackerrank.com/api/countries?page=";

var notFound = true;
var page=1;
var code='AF';
while(notFound){
    console.log(page);
    triggerReq(url+page);
    page++;
}

function triggerReq(url){
    //console.log(url);
    https.get(url, (res)=>{
        console.log('callback for - '+url);
        f1(res);
    }       
    );
    /*
    This code currently works because of this end condition for the loop.
    */
    if (page==5){
        notFound=false;
        //console.log('page = '+page);
    }
}

function f1(res){
    console.log('inn');

    res.on('data',(text)=>{
        //console.log('inn');
        var obj = JSON.parse(text);
        for(var x in obj.data){
            console.log(obj.data[x].name);
            if(obj.data[x].alpha2Code==code){
                console.log('### FOUND ### - '+obj.data[x].name);
                notFound=false;
            }

        }
    });

}

0 个答案:

没有答案