javascript - 将整个代码块包装在 Promise 中时 Promise 和 Deferred 之间的区别?

标签 javascript promise ecmascript-6 deferred

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

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

只是封装一个 promise :

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

这两种情况有什么区别?唯一真正的好处是您不必将所有代码包装在 promise 中吗?如果是这样的话,延期还有什么意义?

最佳答案

延迟是一个具有resolvereject方法的对象,允许更改其状态。 promise 则不然。

至于以两种方式生成 Promise,通常应该没有任何区别。我更喜欢 Promises 的语法,因为它将您的逻辑包装在函数中,并避免变量污染外部范围,但仅此而已。

关于javascript - 将整个代码块包装在 Promise 中时 Promise 和 Deferred 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34386035/

相关文章:

javascript - Jquery模态自动关闭

javascript - ES6 - Promise.all 在 Promise.resolve 中

javascript - 在类中的 promise 中回调?

javascript - node.js - 有人可以解释这个回调吗?

javascript - Blur() 不适用于这种情况?

javascript - 字符串插值,如 scala.js 的 java.text.MessageFormat

javascript - 如何使用reduce正确链接promise

javascript - let 关键字和闭包?

javascript - 删除对象中键的每个实例的优雅方法?

javascript - babel 显示对象扩展运算符意外的 token 错误