Deferred 的实现

一直好奇这个是用来做什么的,传说是复杂的 Promise 的场景用这个会更好
更新于: 2023-04-01 20:03:11
// 实现
function Deferred() {
  this.promise = new Promise((resolve, reject) => {
    this.resolve = resolve;
    this.reject = reject;
  });
}

// 基本使用
const deferred = new Deferred();
deferred.promise
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error(error);
  });

// 在适当的时候解决 promise 对象
deferred.resolve('Success!');

// 或者在适当的时候拒绝 promise 对象
// deferred.reject(new Error('Error!'));