【问题标题】:JS Function executing too fastJS函数执行太快
【发布时间】:2015-04-26 18:57:23
【问题描述】:

我正在进行这样的 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 请求需要一些时间才能得到响应......而且我的函数不会等待这个响应。该函数无需等待即可返回空数组。

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

谢谢

【问题讨论】:

标签: javascript json node.js


【解决方案1】:

它不像快速执行,它是 javascript 逐句运行的方式。要获取您需要在成功回调函数中执行此操作的数据,数据将仅在服务器响应返回时可用,因为它的异步调用在响应到来时您的 javascript 执行下一条语句。

【讨论】:

    【解决方案2】:

    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 乔治

    【讨论】:

    • 另一种方式是,在使用JQuery的时候,添加一个success回调
    • 如果您认为这已被正确标记为重复,您为什么还要回答?
    • @IngoBürk 我回答是因为我认为我可以向原始发帖人澄清这一点,并为他提供快速而肮脏的黑客攻击。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2021-11-03
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    相关资源
    最近更新 更多