GET请求函数使Node.js代码无序执行

时间:2017-09-10 22:21:34

标签: javascript node.js get

好像我的代码执行乱序......

这是我的代码:

console.log("Function Call - " + profAvailable("Plumber"));
function profAvailable(occ) {
    var result = false;
    var reqGet = http.get(optionsget, function(res) {
        res.on('data', function(d) {
            //parsing the data to JSON format
            var parsedShit = JSON.parse(d);
            providers = parsedShit.Providers;//Getting a list of all the providers
            console.log("Provider Length: " + providers.length);
            for (var i = 0; i < providers.length; i++) {
                if (providers[i].Occupation.localeCompare(occ) == 0 && providers[i].Status == 0) {
                    result = true;
                }
            }
        });
    });
    reqGet.end();
    console.log("result - " + result);
    return result;
}

我的输出是:

result - false
Function Call - false
Provider Length: 4

我的代码正在调用该函数,跳过http请求,将方法返回为false,然后输入函数内部的http请求(从代码中的print语句和输出中可以看到)。这是我第一次使用这样的东西,所以我不确定为什么代码按顺序执行,因为它看起来很奇怪。

编辑**函数返回的值取决于我从get调用中检索的信息,那么如何修复我的代码以包含它?

1 个答案:

答案 0 :(得分:0)

这就是预期程序的行为方式。您需要精通异步编程。参考:http://rowanmanning.com/posts/javascript-for-beginners-async/