gpt4 book ai didi

javascript - 有没有正确的方法来存储已解决的 promise ?

转载 作者:搜寻专家 更新时间:2023-10-31 23:24:53 25 4
gpt4 key购买 nike

现在几乎每个 Node 包都有回调接口(interface)。如果我正在围绕它编写包装器,例如 ORM,该怎么办:

const Promise = require('bluebird');
const mongo = Promise.promisifyAll(require('mongodb'));

class ORM {
constructor(mongoUrl) {
this.db = mongo.connectAsync(mongoUrl);
}

collection(name) {
return this.db.then((db) => {
return db.collectionAsync(name);
});
}
}

这是正确的方法吗?

最佳答案

好吧,promise 只是代表值(value) + 时间的值(value)的代理。

你所做的一切都很好。 存储 promise 没问题,事实上通常更好存储 promises 而不是存储它们所持有的值,因为这样你会得到更少的竞争条件。

您所做的唯一问题是错误处理。假设连接失败 - 在实际向数据库发出请求之前,您不会对其使用react或检测到它,这没有太大意义。您应该在构造函数中决定如何应对连接失败并进行处理。

如果您想明确禁止检测到未处理的拒绝,您可以这样做:

this.db = mongo.connectAsync(mongoUrl);
this.db.catch(() => {});

虽然我个人不建议这样做,但您或许应该有重新连接逻辑,如果多次重新连接尝试失败,甚至可能使服务器崩溃。

关于javascript - 有没有正确的方法来存储已解决的 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30042207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com