我正在做这样的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
答案 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 乔治