我正在尝试处理请求中返回的JSON结果
所以我需要在请求调用之外扩展其范围。
为此,我使用空字符串声明data
变量并将结果分配给此data
,但它不会打印结果。
我该如何做到这一点?
module.exports = function(callback) {
var request = require("request")
var url = "http://sheetsu.com/apis/94dc0db4"
var data = "";
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
callback(body)
data = body;
}
})
console.log(data);
}
答案 0 :(得分:2)
这是经典的异步混淆:您的console.log
调用将在http请求回调之前发生。
答案 1 :(得分:1)
您的脚本按此顺序执行:
request()
console.log(data)
request()
回调函数,您在其中将data
值设为如果要打印data
,则必须在请求回调函数中执行此操作。 async模块在执行异步任务时非常有用,特别是如果您需要按特定顺序执行任务并使用此请求中的数据。