我想将get请求中的主体保存在变量中(使用请求模块),但未定义。
我一直在寻找解决方案,但到目前为止没有任何效果。猜猜问题是request.get被称为异步(到目前为止,我还没有异步功能的经验)。
const request = require("request")
...
let foo;
request.get(options,function(err,response,body){
foo = body;
});
console.log(foo);
预期:有效的get请求的正文 实际:未定义
答案 0 :(得分:0)
请求以异步方式完成,因此您的console.log
发生在请求完成之前,因此foo仍未定义。
您必须将控制台日志放入回调主体中。同样,任何需要来自请求结果的计算都应从回调内部开始。
request.get(options,function(err,response,body){
console.log(body);
doSomethingAfterMyRequest(body)
});
此外,您应该处理您的错误,因为如果在请求期间发生错误,则正文可能保持未定义状态。
request.get(options,function(err,response,body){
if (err) {
console.error(err)
return
}
console.log(body);
doSomethingAfterMyRequest(body)
});