猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
返回回调或承诺的函数
我正在构建一个库,我想让它成为一个,以便消费者可以使用回调或承诺来调用我的函数。
最好的方法是什么?
宝慕林4294392
浏览 111
回答 2
2回答
人到中年有点甜
最好的方法完全取决于用例。对于软件中的任何东西来说,“什么是最好的方法”的答案是“视情况而定”。话虽如此,一种典型的方法是对通过的论点进行分支。如果给出了回调,请使用它,如果没有,则返回一个 promise。这里有一个想法(底层逻辑在承诺返回函数中):doStufffunction myModule(cb) { if (cb) { doStuff() .then(result => cb(null, result)) .catch(err => cb(err)); } return doStuff();}我的2美分:支持这两种方法的唯一真正好处是,如果您需要在没有承诺的情况下支持环境。否则,它只是额外的复杂性,没有必要。现在,您必须在代码中维护两倍的逻辑。此外,具有不一致的返回类型或以不一致的方式运行的函数(promise使用微任务,而其他异步机制可能使用常规任务)并不是特别有益。微妙的不一致不是通常想要的功能。
0
0
0
繁华开满天机
你总是可以回报一个承诺,不会破坏任何东西。检测是否定义了回调,如果定义了,则执行它。function doubleIt(x, callback) { return new Promise( (resolve) => { var ans = x * 2 resolve(ans) callback && callback(ans) })}doubleIt(4).then(res => console.log(res))doubleIt(10, res => console.log(res))
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
JavaScript
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续