关于Promise的问题?

我理解的Promise的概念:一个装在异步操作的容器。
图片描述

为什么最后依次输出Promise,Hi!,resolved。

阅读 2.7k
5 个回答

promise的相关介绍可以看
MDN中关于Promise的介绍

至于你上面的输出结果
promise中有三个状态
pending: 初始状态,不是成功或失败状态。
fulfilled: 意味着操作成功完成。
rejected: 意味着操作失败。
console.log('Promise')是在初始状态,还不是异步操作,会先执行
然后是then发现是异步,直接跳过,再console.log('Hi')
最后才会执行fulfilled异步里的console.log('resolved')
虽然promise里有异步代码,但是它也是同步执行下去的

Promise中的代码是正常按照先后顺序执行的 then方法中的代码是放在当前tick的末尾执行

根据官网promise api关于then的描述,then里面执行的回调函数相当于返回了一个以resolve为结果的新promise,相当于新开了一个微任务源线程,当然后执行

感觉好像理解的地方不是重点,promise的异步执行在我看来是说:
当一个函数执行完之后呢,会有返回结果失败或成功(对应reject和resolve),有了结果就会自动执行先前设定好的代码.
new Promise中传入的function设定一个成功的条件,当条件成功后会执行resolve(),接着promise.then中的代码就会执行.
emmm大概就是这样.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题