ES6 中的Promise 和各种Promise库比如Q等中实现的Promise是一回事吗?
Promise是js中用来解决回调嵌套的问题的一套解决方案,在nodejs的开发中也是非常有用。本质上来讲,promise是一套规范和原则,只要设计的库复合规范的要求就都可以算是promise, 目前比较流行的promise有q和when等,但听说ES6中javascript也开始有自己原生的promise了,原生的promise和q的peomise是一样的吗?它们之间能否相互替代,比如co这个库就是设计在es6的promise之上,在co函数中能不能用q提供的promise呢?
3 回复
你需要了解 Promise 规范, 他一共有几种, 比如 Promise/A, Promise/A+ 啥的. ES6中的 Promise 是其中一种, 各个 Promise 规范之间有细微的差别(主要是特性上的). 如果使用的都是基本功能, 那是可以替换的. 如果用到了一些特有的 feature, 那就不行了.
不过 ES6 Promise 以后应该会一统天下吧.
我就是担心这个所以用的是bluebird 自豪地采用 CNodeJS ionic
也查了些资料,promise是支持所谓的thenable对象的,也就是说在只是用then,chatch这些基本方法的情况下,可以相互替代。谢谢各位的回答了。