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