在内部功能中包装/拦截承诺

时间:2017-05-01 19:14:14

标签: node.js promise wrapper

我很难找到问题的答案,也许是因为我不知道如何问它(使用哪些搜索字词)。我真的很难理解承诺,并观看过一些教程视频,但仍然没有得到一些基本的部分来点击它。

在Node中,我使用的是request-promise模块,它在调用rp()方法时返回一个promise。我在打电话     return rp(service); 来自一个功能。但是我想要做的是,添加一个.then()处理程序来对服务调用的结果进行一些后处理,BEFORE将promise返回给调用者,这样调用者仍然可以拥有自己的处理程序。

我如何做到这一点?

1 个答案:

答案 0 :(得分:0)

查看当前的代码以更好地了解您正在努力解决的问题会很有帮助。

一般而言,您可以将承诺视为可以链接在一起的未来价值的占位符。

如果我理解你的问题,你想向服务器发出请求,接收响应,对响应做一些事情并将其返回给调用者。

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
  });

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

随意提供更多详细信息。