前言
学习promise的文章:手写promise详细教程
通过学习后解决几个问题
几个简单的promise问题
1.问:写一段简单的promise的应用
答:
const A = new Promise((resolve, reject){
resolve(3)
})
A.then(
value => console.log("我三岁了",value),
reason => console.log("你三十岁了",reason)
)
2.问:value => console.log("我三岁了",value),
这一行代加粗样式码合适执行
答:当promise里调用resolve函数时
3.问:promise 内部是通过什么方式来实现当promise在fulfilled 和 rejected状态时不会再触发resolve 和 rejected
答:源码通过if语句判断如果时处于pedding状态时才会更改其状态,否则不会更改状态
问:这个代码会返回什么结果?
new Promise((resolve) => {
console.log(1);
resolve(2);
}).then((res) => {
console.log(res);
})
new Promise((resolve) => {
console.log(3);
resolve();
}).then((res) => {
console.log(4)
})
答:1324
补充知识:JS执行时,必须先执行所有的同步任务代码,然后将微队列中的任务取出执行,当所有微任务执行完成以后,再取出宏队列中的代码执行。所以执行顺序是:同步任务---->微队列任务---->宏队列任务。
Promise((resolve, reject) => {… }).then(()=>{…})中(resolve, reject) => {…}是同步执行的,.then()也是同步执行,但是.then()中的回调函数是异步执行