以下为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) => { // 出错的时候 });