Kris Kowal'的设计承诺文章
Kris Kowal's design promises article
我正在阅读Kris Kowal关于承诺的设计文章
我有一个关于blah函数的问题
为什么这个函数在某些情况下会抛出异常
如何重现这种特殊情况?
安全和不变量
var blah = function () {
var result = foob().then(function () {
return barf();
});
var barf = function () {
return 10;
};
return result; };
此函数将抛出异常或返回一个promise将很快用值10来实现。这取决于foob()在事件循环的同一个循环中解析(发出立即在同一堆栈上回调)或在将来的回合中。如果回调被推迟到未来的转折点,它将永远成功。
这只是JavaScript,因为barf
是在注册了then
回调之后定义的-如果同步调用了then回调-它将不会被定义,它将与执行相同
(undefined)();
这是一个错误。插图:
// this code works
setTimeout(function(){
foo("HI");
});
var foo = alert;
// this code throws
(function(){
foo("Hi");
})();
var foo = alert;
Promise库确保在引擎执行平台代码时始终调用回调-因此,对于Promise,如果它们符合Promise/a(+),则这不是问题。例如,jQuery的promise在这里会失败,这取决于foob
是否在jQuery 1和2中解析,而不是在jQuery 3中解析(他们修复了它)。
相关文章:
- 我的职位回报太快了,如何做出承诺
- 打破承诺链的好方法是什么
- 在Shopify中获取博客文章的图片
- 从函数返回角度承诺
- 显示浏览量最高的三篇文章
- 我怎样才能获得承诺的价值
- 延期承诺值未更新/解析/延期
- 在承诺链中处理早期回报的最佳方式
- 在我的网站上显示最近提交的文章/图片
- 承诺在非节点式回调上使用Bluebird
- 简单的ES6承诺问题-交换解决和拒绝参数
- 组合承诺和非承诺值
- 带有对象/原型的链式承诺(Q延期)
- AngularJS$q承诺使用socket.io
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- 当一些承诺失败时,如何继续使用$q.all()
- Nodejs和express路由,如何处理客户端的承诺
- 如何在多承诺链中处理谷歌地图API V3事件
- 承诺合并流
- Kris Kowal'的设计承诺文章