Wrapping/intercepting 内部函数中的承诺

Wrapping/intercepting a promise in an inner function

我很难找到问题的答案,可能是因为我不知道如何提问(使用什么搜索词)。我真的很难理解 promises,并且看了很多教程视频,但仍然没有得到一些基本的东西来让它点击。

在 Node 中,我正在使用请求承诺模块,当我调用 rp() 方法时,它 return 是一个承诺。我打电话 returnrp(服务); 从一个函数中。但我想做的是,在 return 将承诺返回给调用者之前,向其添加一个 .then() 处理程序,以对服务调用的结果进行一些 post 处理所以调用者仍然可以拥有自己的 then 处理程序。

我该如何做到这一点?

查看您当前的代码将有助于更好地了解您到底在哪里遇到困难。

一般来说,您可以将 promises 视为您可以链接在一起的某些未来价值的占位符。

如果我对你的问题的理解正确,你想向服务器发出请求,接收响应,对响应做一些处理,然后 return 返回给调用者。

const callService = (url) => {
  // make sure to return your promise here
  return rp(url)
    .then((html) => {
       // do something with html
       return html;
     });
};

现在可以这样调用了-

callService('http://www.google.com')
  .then((html) => {
     console.log(html);
  }).catch((err) => {
    // error handling
  });

常见的错误是在顶层函数和后续的 then 函数中省略了 return 语句。

欢迎提供更多详细信息。