promise 其实是一个同步任务,promise.then 才是微任务
promise 有三个状态,分别为,resolve,reject,pending,只有状态发生变化,成resolve和reject的时候,它才会执行后面的 .then
let promise=new promise((resolve,reject)=>{
console.log(1);
console.log(2);
})
promise.then(()=>{
console.log(3);
})
console.log(4);
执行顺序: 1,2 ,4, 没有执行3
没有执行3的原因: resolve,reject 没有执行
let promise=new promise((resolve,reject)=>{
console.log(1);
console.log(2);
resolve()
})
promise.then(()=>{
console.log(3);
})
console.log(4);
执行顺序: 1,2 ,4,3
promise.then 是微任务,会在最后执行
let promise=new promise((resolve,reject)=>{
console.log(1);
console.log(2);
reject()
})
promise.then(()=>{
console.log(3);
})
console.log(4);
直接报错,全都不打印
因为:reject 执行的是,如果后面有catch,catch((e)=>{ console.log(e)}) console.log(e)=>undefined
let promise=new promise((resolve,reject)=>{
console.log(1);
console.log(2);
// reject()
reject(123)
})
promise.then(()=>{
console.log(3);
}).catch((e)=>{
// console.log(e) // e 没有输出
console.log(e)
})
console.log(4);
// 打印 undefined
// 打印 123
let promise=new promise((resolve,reject)=>{
console.log(1);
console.log(2);
// reject()
reject(123)
})
promise.then(()=>{
console.log(3);
}).(()=>{
console.log(8);
}).catch((e)=>{
// console.log(e) // e 没有输出
console.log(e)
})
console.log(4);
// 打印 1,2,4,8