假设给出如下代码模板:
// 一个异步函数
function someFun(callback) {}
// 可以传 callback 执行
someFun(console.log);
// 可以返回 Promise
someFun().then(console.log);
someFun
函数要如何编写才能支持 2 种调用风格呢?
我写了篇文章进行详细介绍,欢迎拍砖。
1
moult 2020-09-11 13:44:29 +08:00 via iPhone 4
var a=new promise(...);
if(callback) a.then(callback) else return a; |
2
youmoo OP @moult 可行。不过可以优先 callback, 无 callback 时再 new promise,这样可以省一个 promise 。
|
3
zhuangzhuang1988 2020-09-11 13:55:41 +08:00
|
4
youmoo OP @zhuangzhuang1988 嗯。很多库或框架都有用到这种风格。
|
5
tikazyq 2020-09-11 14:01:11 +08:00
typeof 应该可以解决你的问题
|
6
flowfire 2020-09-11 14:21:52 +08:00
这。。。。感觉像是 promisify ?
正常情况就是判断参数是否存在吧 |
7
lovecy 2020-09-11 14:55:04 +08:00
typof callback === "function"
|
8
tangchi695 2020-09-11 15:00:49 +08:00
判断有没有 callback 不就完事儿了吗
|
9
momocraft 2020-09-11 15:17:50 +08:00
不管有没有 callback 都返回 promise
如果有 callback 就 then 一份 |
10
lin07hui 2020-09-11 16:57:30 +08:00
function someFun(callback) {
const res = { data: "..." }; typeof callback === "function" && callback(res); return Promise.resolve(res); } |