以下为ChatGPT自动生成的解答,正确与否请自行判断。
BFE.devAI解答 - JavaScript 代码题
159. 实现promisify()
实现promisify()的思路是将一个Error-first callback函数转换成返回一个Promise对象的函数。具体实现方式如下:
const promisify = (func) => {
return (...args) => {
return new Promise((resolve, reject) => {
func(...args, (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
};
};
上面代码中,我们返回一个新的函数,这个新函数接受它原来的函数的参数,并返回一个Promise对象。当这个新函数被调用时,它会执行原来的函数,并根据结果来决定是resolve还是reject Promise对象。其中的关键是将原来的callback函数转换成了一个Promise对象,使得我们能够用更加简洁的方式来处理异步操作的结果。最后,我们可以像下面这样使用promisedFunc:
const promisedFunc = promisify(func);
promisedFunc(arg1, arg2)
.then((data) => {
// 成功的时候
})
.catch((err) => {
// 出错的时候
});