从 node.js 中的 request.end() 检索数据

Retrieve data from request.end() in node.js

我想将 unirest 请求的结果用于 Node.js 中的另一个文件,但我无法从 request.end 中获取数据( )函数到外部变量。

代码如下:

request.end(function (response) {
        if(response.error) {
            console.log("AUTHENTICATION ERROR: ", response.error);
        } else {
            callback(null, response.body);
        }

        console.log("AUTHENTICATION BODY: ", response.body);
    });

var result = authentication(function(error, response) {
    var authenticationToken = response.access_token;

    if(authenticationToken != null) {
        console.log("Token: ", authenticationToken);

        return authenticationToken;
    }
});

我想获取 authenticationToken 值以使用 module.exports 导出到另一个模块。

我正在使用 unirest http 库

它是一个回调函数,被视为参数,而不是 returns 值的函数。

不过你可以这样做:

var result;
authentication(function(error, response) {
    var authenticationToken = response.access_token;

    if(authenticationToken != null) {
        console.log("Token: ", authenticationToken);

        module.exports.result = authenticationToken; // setting value of result, instead of passing it back
    }
});

您现在可以使用 result 变量了。 但要小心,它是一个异步函数,因此您可能无法立即使用它,直到在回调函数中为其分配一个值。

要导出结果值:

module.exports.result = null;

例子

m1.js

setTimeout(() => {
   module.exports.result = 0;
}, 0);

module.exports.result = null;

app.js

const m1 = require('./m1.js');

console.log(JSON.stringify(m1));

setTimeout(() => {
  console.log(JSON.stringify(m1));

}, 10);

输出

{"result":null}
{"result":0}

因此您可以继续使用变量 result,一旦变量被分配,它将包含值。