参见英文答案 >
How to return value from an asynchronous callback function? 3个
这可能是一个简单的答案,但我正在尝试获取响应的主体并返回到另一个函数.这肯定是一个范围问题.
这可能是一个简单的答案,但我正在尝试获取响应的主体并返回到另一个函数.这肯定是一个范围问题.
这是我的代码,任何想法都将非常感激:
var request = require("request"); var myJSON = require("JSON"); function getMyBody(url) { var myBody; request({ url: url,json: true },function (error,response,body) { if (!error && response.statusCode === 200) { myBody = body; } }); return(JSON.parse(myBody));
}
js_traverse(getMyBody(url));
谢谢
格伦
解决方法
该声明:
return(JSON.parse(myBody));
在ajax调用返回正文之前执行.你需要将回调传递给getMyBody()来处理request()返回的内容:
var request = require("request"); var myJSON = require("JSON"); function getMyBody(url,callback) { request({ url: url,json: true },body) { if (error || response.statusCode !== 200) { return callback(error || {statusCode: response.statusCode}); } callback(null,JSON.parse(body)); }); } getMyBody(url,function(err,body) { if (err) { console.log(err); } else { js_traverse(body); } });