用 Q 来举例,Q.defer().promise 返回的 promise 是不带和控制状态相关的 方法/属性的,而如果我们直接输出 Q.promise,会发现它是有 resolve/reject 的。
那么问题来了,defer 返回的 promise 和我们常见的 promise 有何区别?为什么要这么设计?
用 Q 来举例,Q.defer().promise 返回的 promise 是不带和控制状态相关的 方法/属性的,而如果我们直接输出 Q.promise,会发现它是有 resolve/reject 的。
那么问题来了,defer 返回的 promise 和我们常见的 promise 有何区别?为什么要这么设计?
1 回答1k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答776 阅读✓ 已解决
3 回答591 阅读
Q.defer().promise 才是 "我们常见的 promise". Q.Promise/promise 只是一个 promise 的构建函数/静态方法的shorthand.
参考源代码片段:
至于为什么要这么设计, 别人乐意呗, 根据 Promises/A+ 标准, 只规定了 promise 的 then 以及相关行为, 对怎样修改当前 promise 的 state 是没有限制的. 我的 Promises/A+ 实现 (ThenFail) reject/resolve 就是挂在 Promise 的实例而不是 deferred 上的.