我最近遇到了一个问题:如何为全局变量赋值?
当我尝试返回a时,我发现它是未定义的,而我想分配给它的“值”并不是未定义的。
我的代码是这样的:
module.exports = function (jsonStr) {
var a;
request(main_url, function(error, response, html) {
if(!error) {
...
request(sub_url, function(error, response, html) {
if(!error) {
...
a = value;
...
}
}
}
}
return a;
});
答案 0 :(得分:0)
问题是您的request
函数是异步的,然后,return a
语句将在您设置a = value
之前发生。
实现目标的一种方法是使用the asyncawait
library,例如:
module.exports = async(function (jsonStr) {
var a;
var sub_url = await(request(main_url));
a = await(request(sub_url));
return a;
});
看看this QA。