Promise并不是一个新的概念,它已经有将近30年的历史.
其早期的雏形还有里氏替换原则的提出者Barbara Liskov的贡献在其中.
https://en.wikipedia.org/wiki/Futures_and_promises#History
而Promises/A+这个规范的出现,则为JavaScript世界中众多Promise实现库提供了一套统一的API和交互机制.
Promises/A+提供了配套的测试集: https://github.com/promises-aplus/promises-tests .
其中共有872个测试,如果你的实现能够让全部测试绿起来,则可以认为该实现符合了标准.
我的Promise实现: https://github.com/cuipengfei/Spikes/tree/master/js/promise
在npm上的发布: https://www.npmjs.com/package/RWPromise
要实现Promises/A+的规范其实并不需要很多代码,我的实现只有88行.当然,仅仅是符合规范和一个可用,易用的Promise库之间还有很大的差距.
如果作为教学或者演示的目的,我认为我的这份实现是已有实现中最简洁的一版.