promise的原生实现
- 这篇文章不讲promise的作用是什么,promise的出现不仅仅是解决回调地狱的,我会在之后用一篇文章来讲讲promise的作用和意义,这篇文章只讲promise的实现
- 了解promise的特性
var pr = new Promise(function(resolve,reject){
resolve(3)
})
console.log(pr)
- 本人建议在浏览器里进行研究,因为在node中有一些细节方面的东西不会表现出来
- 就比如上面的代码在浏览器中和在node中输出是不一样的
- 在浏览器中:
- 在node中:
- 比较之后可以看见,在浏览器中展现出来的细节会更多一点,如果你想研究javascript,建议使用浏览器
- 可以看见,在promise中,又两个值得关注的点:一个就是promise的状态,即PromiseStatus,另一个是promise的值,即PromiseValue,还有一个可以去关注的点,就是 __proto__属性,
可以看见 then,catch 这些方法都是不可枚举的
- 还有一个需要注意的一点,就是 promise的传入的参数是一个函数,并且这个函数有两个参数,一个是resolve,另一个是reject
现在就来实现一下promise
function Opromise(task){
this.PromiseStatus = "pending"
this.PromiseValue = undefined
var that = this
function resolve(value