promise 是es6 的标准函数,主要是解决执行函数当中的回调问题,相对于async,async只是一套解决回调的语法糖,而promise就是协议的方案,在未来环境当中,不用require就可以使用。
对于当前版本以第五版为主,不过promise的原理还是比较简单,社区已经有很多库进行模拟,下面列了一下
本来打算展开写自己实现一个promise,但发现在网上已经有一个很好的教程了,我觉得自己没能力写得比他好,所以我直接贴出来,大家可以参考 http://www.html-js.com/article/1739
关于promise 的思考
相对于async,promise的实现和细节实在复杂太多了,从promise的代码量里面来看足足是async实现的几倍,而且学习成本也会比async高,这是一点,另外一点,函数需要封装成promise形式才能搞保证链式调用,虽然一般promise模块,都会为标准的node.js函数提供,快捷的封装函数,但跟async的拿来就有的使用体验来说,还是有差距,但是promise还是有很吸引人的杀手锏,es6的标准函数,由javascript的引擎直接提供,性能肯定要比async好,而且不用引入一个async模块,在浏览器上表现肯定会更加好,关于两者的选择,我觉得如果你的项目周期感觉比较长,建议还是用promise,毕竟这个才是大方向,如果只是简单做做,我觉得async上手更加快。