Javascript 接受回调并返回承诺的函数:它是坏的吗?
我正在开发一种SDK。根据设计,所有异步函数都应该同时使用:回调和承诺。例如:Javascript 接受回调并返回承诺的函数:它是坏的吗?,javascript,callback,promise,Javascript,Callback,Promise,我正在开发一种SDK。根据设计,所有异步函数都应该同时使用:回调和承诺。例如: function asyncOp(arg, cb) { ... } asyncOp(1, (err, res) => { ... }) // returns undefined when you pass a callback asyncOp(1).then(...) // returns a promise when callback is undefined 这种接口有什么不好的地方吗?你能提供一些提供类
function asyncOp(arg, cb) {
...
}
asyncOp(1, (err, res) => { ... }) // returns undefined when you pass a callback
asyncOp(1).then(...) // returns a promise when callback is undefined
这种接口有什么不好的地方吗?你能提供一些提供类似接口的流行库的例子吗?MongoDB的node.js API就是这样做的
至于有什么不好的地方吗:它会让你的库代码更难阅读。对于一致性和不支持坏模式也有一些说法,但这是基于观点的。有点基于观点。我更喜欢1个精确的接口,所以在我自己的项目中,我总是使用promisify函数将回调转换为承诺。但是,由于将回调转换为承诺,反之亦然,只能用几行代码进行编码,因此我会选择其中一行,让您的SDK用户自行决定是否将您决定的内容转换为他们喜欢的内容。如果是新的SDK,我看不出有理由支持回调方法。承诺与回调的好处都有很好的文档记录,你们都同意。这里的问题是——您从不单独工作,可能有同事认为支持两种接口更好。