根据 Refer, 以例子为主作为平时参考.

Why Promise

关于回调地狱(Callback Hell)直到前段时间写的一个项目我才有点意识到是怎么回事情: 一个稍微复杂的前端逻辑, 需要对一件事情在不同阶段/不同状态进行相关处理, 和画逻辑图一个概念, 传统的 callback 会导致函数一直层级向下直到逻辑处理完毕(minimap 显示起来像个>). 而且 Promise 在开发的时候就更加规范化, 不像自定义的 callback 自由度很高(乱);每个 promise 拥有一个状态逻辑处理, 也就是更加模块化.

Base

从传统的 callback 过度

以 onload 事件为主的基础 promise 使用

XHR mode

XHR + 链式调用(调用完返回新的 promise 对象)

then 链式传值

simple calculation with promise-chain then 会new一个 Promise 对象, 并把 return 作为参数引入

错误样例

针对前面做的补充: 错误样例. 需要注意规范, 利用链式保证对象的准确性.

PS: Releasing Zalgo

这个问题是关于传统 callback 的 async 和 sync 混用问题. 现在看到的大部分方式是以异步方法将同步代码转换为异步代码. Example: 浏览器setTimeout(callback, 0) nodeprocess.nextTick(callback)
而 Promise 的规范限制他只能使用异步调用, 所以相关混用问题就不容易出现了.

Reference

promise-mini | gitbook