JS函数执行得太快

时间:2015-04-26 10:42:46

标签: javascript json node.js

我正在做这样的JSON调用:

var desc = getItemDescriptions(xxx);

function getItemDescriptions(xxx) {
var url = "xxx;
var info = {};

request({
url: url,
json: true
}, function (error, response, body) {

    if (!error && response.statusCode === 200) {
        info ["..."] = body.result[xxx].yyy;
        info ["..."] = body.result[xxx].yyy;
        info ["..."] = body.result[xxx].yyy;
        info ["..."] = body.result[xxx].yyy;
        info ["..."] = body.result[xxx].yyy;
    }
})
return info;
}

我的问题是,JSON请求需要一些时间来回复...而我的功能并没有等待这个响应。函数返回空数组而不等待。

我如何等待响应然后返回填充的数组?

THX

2 个答案:

答案 0 :(得分:0)

它不像快速执行,它是javascript在语句后运行语句的方式。要获得成功回调函数所需的数据,只有当服务器响应作为异步调用返回时,数据才会可用,而响应时间javascript会执行下一个语句。

答案 1 :(得分:0)

Juhana已经为您提供了获得良好解决方案的最佳场所。 How to return the response from an async call

快速而肮脏的黑客(如果请求是类似jQuery的Ajax函数)将使请求同步。

这可以通过将async: false添加到传递给请求的第一个参数来完成:

request({ url: url,json: true, async: false}, function ....

这样return info将在您的请求完成后执行。

HTH 乔治