从 request.get() 中保存正文

Saving body from request.get()

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

我已经搜索了解决方案,但目前没有任何效果。猜想问题是 request.get 是 calles async(到目前为止我没有异步函数的经验)。

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

预期:有效 get-request 的正文 实际:未定义

请求以异步方式完成,因此您的 console.log 发生在请求完成之前,因此 foo 仍未定义。

您必须将控制台日志放入回调正文中。此外,任何需要请求结果的计算都应该从回调中开始。

request.get(options,function(err,response,body){
    console.log(body);
    doSomethingAfterMyRequest(body)
});

此外,您应该处理您的错误,因为如果在您的请求期间发生错误,则 body 可能仍未定义。

request.get(options,function(err,response,body){
    if (err) {
        console.error(err)
        return
    }
    console.log(body);
    doSomethingAfterMyRequest(body)
});