如果这是一个愚蠢的问题我很抱歉,但我是Javascript和Node.js的新手真的很痛,因为它是异步的。
我的目标是从API查询JSON对象并能够使用它。我试图在我应该做的事情上寻找问题和答案但是对我来说没有任何意义,所以我希望通过看到正确的代码来学习。
var request = require('request');
var url = 'url here';
var temp;
var done = false;
request(url, function (error, response, body) {
if (!error) {
temp = body;
done = true;
console.log(temp);
} else {
console.log(error);
}
});
if (done){
console.log(temp);
}
有人可以指导我通过正确的方式来重构我的代码吗?
答案 0 :(得分:0)
您使用
行创建的功能request(url, function (error, response, body) {
在收到响应之前,不会执行。其余代码继续运行。想想这样的流程:
var request = require('request');
var url = 'url here';
var temp;
var done = false;
request(url, XXX);
if (done){
console.log(temp);
然后当收到响应时(可能很晚),执行函数XXX
。
如您所见,{<1}}在行
时始终为falsedone
已执行。