文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第3章 Promise
在第 2 章里,我们确定了通过回调表达程序异步和管理并发的两个主要缺陷:缺乏顺序性和可信任性。既然已经对问题有了充分的理解,那么现在是时候把注意力转向可以解决这些问题的模式了。
我们首先想要解决的是控制反转问题,其中,信任很脆弱,也很容易失去。
回忆一下,我们用回调函数来封装程序中的 continuation,然后把回调交给第三方(甚至可能是外部代码),接着期待其能够调用回调,实现正确的功能。
通过这种形式,我们要表达的意思是:“这是将来 要做的事情,要在当前的步骤完成之后发生。”
但是,如果我们能够把控制反转再反转回来,会怎样呢?如果我们不把自己程序的 continuation 传给第三方,而是希望第三方给我们提供了解其任务何时结束的能力,然后由我们自己的代码来决定下一步做什么,那将会怎样呢?
这种范式就称为 Promise。
随着开发者和规范撰写者绝望地清理他们的代码和设计中由回调地狱引发的疯狂行为,Promise 风暴已经开始席卷 JavaScript 世界。
实际上,绝大多数 JavaScript/DOM 平台新增的异步 API 都是基于 Promise 构建的。所以学习研究 Promise 应该是个好主意,你以为如何呢?!
本章经常会使用“立即”一词,通常用来描述某个 Promise 决议(resolution)动作。但是,基本上在所有情况下,这个“立即”指任务队列行为(参见第 1 章)方面的意义,而不是指严格同步的现在 。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论