【问题标题】:What is the best way of using response of first call as request payload for second call in Node.js without using promises?在不使用承诺的情况下,在 Node.js 中使用第一次调用的响应作为第二次调用的请求负载的最佳方法是什么?
【发布时间】:2017-07-06 23:55:15
【问题描述】:

我正在尝试在 Node.js 中进行 2 次 /POST 调用。我想使用第一次调用的一些响应字段作为第二次调用的有效负载。我知道的实现如下:

function abc(reqObject, callback){
  request(reqObject, function(err,res)){
    if(err)
    {
      callback(err, null);
    }
    else
    {
      <use this res for second req>
      request(reqObject, function(err,res)){
       <err,res handling here>
      }
    }
  }
}

在不使用 Promise 和异步模块的情况下,实现这一目标的最合适的方法是什么(不会弄乱回调)?我正在尝试仅使用请求模块来做到这一点。

【问题讨论】:

  • 如果你不想使用 promise 和 async 模块(但为什么不这样做),你正在做的事情除了不是写格式之外完全没问题。您可以尝试 request-promise github.com/request/request-promise 这将默认返回一个承诺,因此您不需要将您的请求包装在一个承诺中。
  • 谢谢穆斯塔法。我必须只使用请求模块,这就是为什么我不使用承诺或异步。
  • 试试我给出的答案应该可行。
  • 谢谢。我提到的方法工作正常(我错过了 request() 的右括号)。我只是想知道是否有任何其他更有效的方法来做到这一点。

标签: node.js request node-modules


【解决方案1】:

您几乎做对了所有事情。只有大括号不在正确的位置。

function abc(reqObject, callback){
 request(reqObject, function(err,res){
   if(err)
  {
  callback(err, null);
}
else
{
  // <use this res for second req>
  request(reqObject, function(err,res){
  //  <err,res handling here>
 });
}
});
}

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
猜你喜欢
  • 1970-01-01
  • 2022-11-24
  • 2019-04-26
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-03
相关资源
最近更新 更多