在不使用Promise对象,仅使用简单的回调函数来实现异步操作时(如setTimeout),JavaScript引擎(主线程)都会依赖于浏览器的其他线程(如定时触发线程)来并发的执行异步任务的第一个阶段,当第一个阶段结束时,返回结果并将作为异步任务的第二个阶段的回调函数推送入消息队列中,依靠Event Loop让主线程读取执行,那么,使用Promise对象时,Promise对象是否就像是一个代理,浏览器的辅助线程首先将异步任务第一阶段的结果传递给Promise对象,并改变Promise对象的状态,然后通过Promise对象将异步任务比一阶段执行的结果传递给调用之前通过then()或catch()为异步任务第二个阶段注册的回调函数,从而来执行异步任务的第二阶段?那么通过then()或catch()注册的回调函数也会进入消息队列中吗?浏览器是不是也有一个线程来管理Promise对象,就像浏览器的HTTP异步请求线程来管理Ajax一样?是不是使用Promise后,更加繁琐了?对于Promise的本质还是没有弄清,有没有大神能够形象的讲解一下Promise到底和普通的回调函数实现异步有那些区别.....不胜感激
Qyouu
相关分类