如何释放 nodeJS Q 承诺链中的资源并返回承诺



新承诺和Q。

我想调用一个抽象底层资源的方法。 该方法将打开资源进行一些处理,然后关闭资源。

像这样:

module.exports = function fetchRecords() {
    return openConnection()
        .then(fetchRecords)
        .then(groupById)
        .catch(rethrow)
        .done(closeConnection);
} 
function closeConnection(result) {
   releaseConnection();
   return result;
}

既然我称之为完成,回报不是一个承诺,而是一个不确定的。

我希望在我的客户中我可以做到:

resource.fetchRecords().then(/*do something else*/);

看起来我必须向客户端公开基础资源,以便我可以执行以下操作:

resource
  .openConnection()
  .then(resource.fetchRecords)
  .then(/*do something else*/)
  .catch(/*..*/)
  .end(resource.close)

我不知道Q或承诺...但我想也许有更好的方法?

我应该只做:

 module.exports = function fetchRecords() {
    return openConnection()
        .then(fetchRecords)
        .then(groupById)
        .then(closeConnection)
        .catch(rethrow);
} 

而不是done使用 finally ,它返回一个 promise:

https://github.com/kriskowal/q/wiki/API-Reference#promisefinallycallback

module.exports = function fetchRecords() {
    return openConnection()
        .then(fetchRecords)
        .then(groupById)
        .catch(rethrow)
        .finally(closeConnection);
}

相关内容

  • 没有找到相关文章

最新更新