将整个代码块包装在承诺中时,承诺和延迟之间的区别?
Difference between promise and deferred when wrapping your entire block of code in a promise?
延迟(使用您选择的库):
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 是具有 resolve
和 reject
方法的对象,允许更改其状态。承诺不会。
至于以两种方式生成承诺,通常应该没有任何区别。我更喜欢 Promises 的语法,因为它将您的逻辑包装在一个函数中并避免变量污染外部范围,但仅此而已。
延迟(使用您选择的库):
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 是具有 resolve
和 reject
方法的对象,允许更改其状态。承诺不会。
至于以两种方式生成承诺,通常应该没有任何区别。我更喜欢 Promises 的语法,因为它将您的逻辑包装在一个函数中并避免变量污染外部范围,但仅此而已。