【问题标题】:NodeJS Request return JSON from functionNodeJS请求从函数返回JSON
【发布时间】:2019-02-12 09:24:00
【问题描述】:

我在这里阅读了几篇关于此的帖子(回调),但我仍然不完全了解如何解决我的问题。所以我希望这里有人可以帮助我,我会做得更好。

简单地说,我希望从第一个请求中获得的 ID 用于第二个请求。

总的来说,我是 JavaScript 和 NodeJS 的新手。

function idRequest(name) {
    var options = {
        ...
    };
    
    function callback(error, response, body) {
        if (response.statusCode == 200 && !error) {
           const info = JSON.parse(body);
           //console.log(info.accountId);
           return info.accountId;   
       }    
    }
    request(options, callback);
}

function requestById(accountId) {

    var options = {
        ...
    };

    function callback(error, response, body) {
        if (response.statusCode == 200 && !error) {
            const info = JSON.parse(body);
            console.log(info);
        }   
      }
    
    request(options, callback);
}

var id = idRequest('..');
requestById(id);

【问题讨论】:

    标签: javascript node.js callback request


    【解决方案1】:

    尝试从第一个函数返回一个promise并在其中解析回调,所以一旦它被解析,你就可以使用它来触发第二个函数

    function idRequest(name) {
      var options = {
        ...
      };
    
      function callback(error, response, body) {
        if (response.statusCode == 200 && !error) {
          const info = JSON.parse(body);
          //console.log(info.accountId);
          return info.accountId;
        }
      }
      return new Promise(function(resolve, reject) {
        resolve(request(options, callback))
    
      })
    }
    
    function requestById(accountId) {
    
      var options = {
        ...
      };
    
      function callback(error, response, body) {
        if (response.statusCode == 200 && !error) {
          const info = JSON.parse(body);
          console.log(info);
        }
      }
    
      request(options, callback);
    }
    
    var id = idRequest('..').then(function(data) {
      requestById(data);
    });
    

    【讨论】:

      【解决方案2】:

      因为回调是异步调用,所以当你调用requestById(id);时,var id 将是undefined

      所以您可以使用由@brk 回答的promise 方法,也可以直接从第一个回调中调用requestById(id) 函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-09
        • 1970-01-01
        • 2021-06-28
        • 2022-01-26
        • 1970-01-01
        • 2012-09-06
        • 2021-11-01
        • 1970-01-01
        相关资源
        最近更新 更多