如何将传出请求的结果检索到变量中

时间:2018-02-11 22:59:27

标签: node.js express

我的应用程序nodejs + express必须向另一台服务器发出请求以建立他的答案。此请求将被大量使用。我想把它放在一个模块中。我正在使用requestjs模块。我可以构建我的查询并在控制台中获得正确的结果。但我无法将此代码合并到我可以调用的模块中。处理传入请求有很多例子,但传出请求很少。我该如何构建这个模块。我知道如何做简单的模块而不是这个。此代码不起作用。谢谢你的帮助

var request = require("request") ;

request ("http://example.com", function(error, response, body) {
  myInformation = JSON.parse (body) ;

  mytoken = myInformation.token
  console.log(mytoken);
});


exports.myTest = function () {

return myToken ;
};

3 个答案:

答案 0 :(得分:0)

不确定,但我认为你需要这样的东西

    module.exports = function() {
        var request = require("request") ;
        return {
           requestBuilder: function(url) {
             let token;
             request (url, function(error, response, body) {
               myInformation = JSON.parse (body) ;
               token = myInformation.token
             });
             return token;
           }
        }
    }


// Use this module as
const token = require('<request module file name>')(url); 

答案 1 :(得分:0)

你的模块看起来像这样

let request = require("request");

exports.handler = callback => {
  request("http://example.com", function(error, response, body) {
  //call the callback with anything you want
  callback(response);
 });
};

然后你需要在任何你想要的地方

const { handler } = require('path to your module')

handler(param => {
  console.log(param)
  // do things with the params you sent from your module
})

答案 2 :(得分:-1)

这样,不起作用吗?请输入你的答案而不是,它显示的错误是什么,请?

var exports = module.exports = {};

let promise = new Promise((resolve, reject) => {

var request = require("request");

    request ("http://example.com", function(error, response, body) {
      myInformation = JSON.parse (body) ;

      mytoken = myInformation.token

      resolve(mytoken);
      console.log(mytoken);
   });

});

exports.getRequestObj = promise;

稍后,在导入该函数后,您将...

//With this way, you can recover your value
exportFunction.getRequestObj.then((res) => {
  console.log(res)
})