缩短承诺
Short-cutting a promise
本文关键字:承诺 更新时间:2023-09-26
>我正在创建一个延迟,然后在涉及异步行为的函数中返回一个承诺。
var deferred = $q.defer();
//...make use of the deferred
return deferred.promise;
我想在函数顶部添加一个快捷方式,该快捷方式将绕过异步活动并立即有效地返回已解决的承诺。我应该怎么做?
例如,这会是惯用语吗?
if (shouldShortcut) {
return $q.when(true);
}
您可以立即解决延迟,但仍返回其承诺:
if (shouldShortcut) {
deferred.resolve();
return deferred.promise;
}
编辑:我现在看到你说的是$q而不是Q。请参阅下面的中断,了解我之前的答案,因为它与 Q 库有关。
根据Benjamin Gruenbaum下面的评论(他后来删除了),$q.when()
是一个很好的方法:
var resolvedPromise = $q.when();
您可以通过将其传递到when()
中来解析特定值:
var resolvedPromise = $q.when("all good");
这里没有必要涉及延期。事实上,我建议限制延迟的使用,因为它们很可能很快就会过时,转而支持ES6中使用的揭示构造函数模式。
<小时 />(上一个答案)
Q 库提供了一种与 ES6 承诺标准一致的方法:
Q.Promise.resolve();
这会产生一个决心的承诺。
如果要使用特定值解析它,可以传入该值:
Q.Promise.resolve("all good"); // promise resolved with the value "all good"
相关文章:
- 我的职位回报太快了,如何做出承诺
- 打破承诺链的好方法是什么
- 从函数返回角度承诺
- 我怎样才能获得承诺的价值
- 延期承诺值未更新/解析/延期
- 在承诺链中处理早期回报的最佳方式
- 承诺在非节点式回调上使用Bluebird
- 简单的ES6承诺问题-交换解决和拒绝参数
- 组合承诺和非承诺值
- 带有对象/原型的链式承诺(Q延期)
- AngularJS$q承诺使用socket.io
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- 当一些承诺失败时,如何继续使用$q.all()
- Nodejs和express路由,如何处理客户端的承诺
- 如何在多承诺链中处理谷歌地图API V3事件
- 承诺合并流
- JavaScript承诺-无法读取属性'那么'的未定义
- 等待循环调用的所有承诺完成
- Pg承诺性能提升:在冲突中
- 如何判断请求/承诺是否需要超过5秒才能完成,angular js