从request.get()保存正文

时间:2019-03-23 16:37:30

标签: javascript node.js node-request

我想将get请求中的主体保存在变量中(使用请求模块),但未定义。

我一直在寻找解决方案,但到目前为止没有任何效果。猜猜问题是request.get被称为异步(到目前为止,我还没有异步功能的经验)。

const request = require("request")
...
let foo;
request.get(options,function(err,response,body){
    foo = body;
});
console.log(foo);

预期:有效的get请求的正文 实际:未定义

1 个答案:

答案 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)
});