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

Difference between promise and deferred when wrapping your entire block of code in a promise?

本文关键字:promise deferred 区别 之间 包装 代码      更新时间:2023-09-26

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

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的语法,因为它将逻辑封装在函数中,避免了变量污染外部范围,但仅此而已