手写 promise 代码中,关于作用域执行上下文的问题求解?

看网上手写promise,看到这个部分就看不懂了

    class MyPromise{

constructor(func){

this.state = 'PENDING';

console.log(this.state,'11')

func(this.resolve.bind(this))

}

resolve(){

this.state = 'REJECTED'

}

then(){

return new MyPromise(res=>{

console.log(this.state,'22')

})

}

}

new MyPromise(res=>{

res()

}).then()

打印:手写 promise 代码中,关于作用域执行上下文的问题求解?

为什么state赋值了PENDING,回调里state=REJECTED


回答:

看图

手写 promise 代码中,关于作用域执行上下文的问题求解?

手写 promise 代码中,关于作用域执行上下文的问题求解?


回答:

箭头函数没有自己的 this 。它里面的 this 是包含它的函数的 this 。包含它的函数时 then 。于是里面的 this 并不是你新创建的 promise ,而是原来那一个。

        then(){ // <--- this 是这里的 this

return new MyPromise(res=>{

console.log(this.state,'22')

})

}

以上是 手写 promise 代码中,关于作用域执行上下文的问题求解? 的全部内容, 来源链接: utcz.com/p/937562.html

回到顶部