gpt4 book ai didi

node.js - 如何释放 NodeJS Q promise 链中的资源并返回 promise ?

转载 作者:太空宇宙 更新时间:2023-11-03 21:57:56 26 4
gpt4 key购买 nike

promise 和问题的新内容。

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

类似这样的事情:

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

function closeConnection(result) {
releaseConnection();
return result;
}

由于我调用完成,返回不是 promise 而是未定义。

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

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

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

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

我不知道问题或 promise ...但我想也许有更好的方法?

我应该这样做:

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

最佳答案

使用finally代替done,它返回一个 promise :

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

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

关于node.js - 如何释放 NodeJS Q promise 链中的资源并返回 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35279400/

26 4 0
文章推荐: angularjs - 跨源请求被阻止 - NodeJs
文章推荐: javascript - 显示点击返回后HTML显示的最后状态
文章推荐: html - 使用 CSS 在 HTML 中设置
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com