gpt4 book ai didi

javascript - 抽象函数以便让选择返回 Promise 或回调

转载 作者:太空宇宙 更新时间:2023-11-04 00:28:30 24 4
gpt4 key购买 nike

我不知道这也许是一种反模式。

很快非常年轻的开发人员将加入我们的开发团队,我想让他们选择是否要使用带有回调或 Promises 模式的模块。

该函数主要是将数据保存到数据库中。我重复 db.insert 流程以抽象该函数,但是还有其他方法可以做到这一点吗?

function create(data, callback) {

if(callback) {
db.insert(data, function(err, doc) {
return callback(err, doc);
});


} else {
return new Promise(function(res, rej) {
db.insert(data, function(err, doc) {
if(err) {
return reject(err);
}
return resolve(doc);

});
});
}
}

最佳答案

我喜欢 bluebird .asCallback(...)方法:

function somethingAsync(cb) {
return somePromise().asCallback(cb);
}

...本质上,您返回一个 promise 并调用回调(如果已传递)。因此,无论哪种方式都可以使用。如果您不想采用 Bluebird,您基本上可以这样做:

function somethingAsync(cb) {
var promise = somePromise();
if (!cb) return promise;

promise.then(res => cb(null, res), err => cb(err));
}

关于javascript - 抽象函数以便让选择返回 Promise 或回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41841193/

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