是否存在无法使用承诺而必须使用延期的情况
Is there any situation where it is impossible to use a Promise and a Deferred must be used?
基于风格/清晰度的原因,我理解人们可能更喜欢一种方法而不是另一种方法,但我正在努力理解是否存在任何情况,即您不能使用Promise,而必须使用Deferred。作为参考,我使用的是Q javascript库,但我认为它适用于任何其他库和语言。我不相信"失败很酷,因为…"下面的解释实际上描述了一种情况,即不可能通过简单的q.Promise()
调用(因此必须使用Deferred
)来实现相同的事情,但我想检查一下这是正确的。
延期仅仅是为了消除"末日金字塔",还是还有更多延期?
这个问题很有趣,但并不能真正解决这个特殊的问题。
不,没有这种情况。通过显示它们之间的翻译,很容易证明你可以用promise构造函数做任何你想做的事情,而不使用deferred:
var deferred = {};
var p = new Q.Promise((resolve, reject){ // always runs sync
deferred.resolve = resolve;
deferred.reject = reject;
});
deferred.promise = p;
promise构造函数的优点是它是抛出安全的,也就是说,同步抛出被转换为拒绝,这使您免受细微错误的影响。
在任何一种情况下,结构都应该很少使用。Q也是一个相当古老的图书馆,想想更新更现代的吧。
相关文章:
- 我的职位回报太快了,如何做出承诺
- 打破承诺链的好方法是什么
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 从函数返回角度承诺
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 在不阻止默认行为的情况下检测IE10中的缩放
- Array.length似乎不起作用;console.log则显示其他情况
- 我可以在不创建延期的情况下报告Q承诺进度吗
- 承诺在这种情况下如何实施
- 在以下情况下如何使用承诺
- 在这种情况下,我将如何使用 javascript 创建一个承诺函数
- 如何在不缓存外部的情况下将“this”传递到承诺中
- 是否存在无法使用承诺而必须使用延期的情况
- 在这种情况下,如何维护类似承诺的 API
- AngularJS的承诺在没有等待异步响应的情况下被拒绝(它应该会被解析)
- 在没有承诺的情况下多次调用同一个异步函数加载数据
- 在这种情况下如何使用蓝鸟承诺
- Javascript承诺在我的情况下不起作用