将普通函数封装为Promise

问题描述

简单描述一下遇到的问题:原方法是一个对象的方法,这个对象对于我来说是黑盒,接受一个回调方法。而我想要一个能够返回promise的方法,从而方便异步操作,因此我进行了封装,在这记录一下:

1
2
3
4
5
const testEvent = {
uploadImg: (callback) => {
setTimeout(callback('uploadImg'), 100)
}
}

封装方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const bridge = {
call: 大专栏  将普通函数封装为Promiseunction">(method, callback, ...arvg) => {
return new Promise((resolve, reject) => {
const realCallback = (...arvg) => {
try {
resolve(callback(...arvg))
} catch (e) {
reject(e)
}
}
const callbackId = window.callBackArr.push(realCallback) - 1
testEvent[method](...arvg, callbackId)
})
}
}

调用:

1
2
3
test (image) {
return bridge.call('uploadImg', (res) => {console.log(res)}, 'imageName')
}

以上

原文地址:https://www.cnblogs.com/lijianming180/p/12433453.html