采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
但实际Promise立马resolve了,后面的同步代码要先于then里的回调函数执行,微观任务这块怎么弄的呢
你提供的这种直接加setTimeOut的方案,存在一个问题,问题见截图!
if (this.status === 'pending') {
setTimeout(() => {
this.status = 'success'
this.resolve_executor_value = value
this.resolve_then_callbacks.forEach((callback) => callback())
}, 0)
AAAAAA
你提供的这种直接加setTimeOut的方案是个方案,但存在一个问题, 问题见上方截图!
确实是
这个问题简单,只需要控制好同步即可!参加截图,不难理解,我没有写注释,留点思考的空间给你!
那么如何把resolveinThen()方法的返回变成一个promise呢,不可能人为在调用时,在then里就改成return new Promise()啥的
resolve方法,改成setTimeout(,0)调用,是不是就可以了
1. 这个isPromise2 是必须要加的,而且调用是并不需要人为添加返回Promise, 针对的是 当你在then函数中返回Promise时直接 resolve没有加setTimeOut或其他异步时,会直接返回Promise对象给下一个then的问题, 而上面截图中if 块代码就是解决这个问题的, 你在调用时没需要时不用添加 return new Promise. 2. 你思考对了加 setTimeout,那么加这个setTimeout真实解决了什么问题呢?是解决测试类中Promise 不加setTimeout 直接resolve 后 resolve先于 then执行的问题吗? 可以思考下!
登录后可查看更多问答,登录/注册
轻松驾驭 TypeScript 高级用法, 突破前端成长瓶颈
1.1k 15
783 12
927 11
832 11
579 10