在promise中包装整个代码块时,promise和deferred之间的区别



延迟(使用您选择的库):

const deferred = library.defer();
if (condition) deferred.resolve('success');
else deferred.reject('fail');
deferred.promise.then((result) => console.log(result));

只是承诺:

new Promise((resolve, reject) => {
  if (condition) resolve('success');
  else reject('fail');
}).then((result) => console.log(result));

这两种情况有什么区别?唯一真正的好处是你不必把所有的代码都包装在一个承诺中吗?如果是这样的话,延期有什么意义?

deferred是一个具有resolvereject方法的对象,允许更改其状态。承诺不会。

至于以两种方式产生承诺,一般来说应该没有任何区别。我更喜欢Promises的语法,因为它将逻辑封装在函数中,避免了变量污染外部范围,但仅此而已

最新更新