我理解的Promise的概念:一个装在异步操作的容器。
为什么最后依次输出Promise,Hi!,resolved。
感觉好像理解的地方不是重点,promise的异步执行在我看来是说:
当一个函数执行完之后呢,会有返回结果失败或成功(对应reject和resolve),有了结果就会自动执行先前设定好的代码.
new Promise中传入的function设定一个成功的条件,当条件成功后会执行resolve(),接着promise.then中的代码就会执行.
emmm大概就是这样.
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
promise的相关介绍可以看
MDN中关于Promise的介绍
至于你上面的输出结果
promise中有三个状态
pending: 初始状态,不是成功或失败状态。
fulfilled: 意味着操作成功完成。
rejected: 意味着操作失败。
console.log('Promise')是在初始状态,还不是异步操作,会先执行
然后是then发现是异步,直接跳过,再console.log('Hi')
最后才会执行fulfilled异步里的console.log('resolved')
虽然promise里有异步代码,但是它也是同步执行下去的