基本使用:
var a=1;
new Promise((resolve,reject)=>{
setTimeout(()=>{
a=10;
resolve(); 改为成功状态
},2000)
}).then(()=>{
console.log(a)
})
--------------------------------------------
var a=1;
new Promise((resolve,reject)=>{
setTimeout(()=>{
a=10;
reject();//改为失败状态
},2000)
}).then(()=>{
console.log(a)
},()=>{
console.log('失败状态') 在then的第二个参数中体现
})
值的传递:
new Promise((resolve,reject)=>{
//resolve,reject 可以传递参数,传递的参数 给后面的then()使用
setTimeout(()=>{
var a=10;
resolve(a)
},2000)
}).then((a)=>{
console.log(a)
},()=>{
console.log('失败状态')
})
连续出发的状态:
new Promise((resolve,reject)=>{
resolve()
}).then(()=>{
console.log(1)
},()=>{
console.log('2')
}).then(()=>{
console.log(3)
},()=>{
console.log('4')
})
返回:1、3
--------------------------------------
new Promise((resolve,reject)=>{
reject()
}).then(()=>{
console.log(1)
},()=>{
console.log('2')
}).then(()=>{
console.log(3)
},()=>{
console.log('4')
})
返回:2、3
---------------------------------------
new Promise((resolve,reject)=>{
reject()
}).then(()=>{
console.log(1)
},()=>{
console.log(2);
return new Promise((resolve,reject)=>{
reject();
})
}).then(()=>{
console.log(3)
},()=>{
console.log(4)
})
返回:2、4
铺获失败,并终止执行:
new Promise((resolve,reject)=>{
resolve()
}).then(()=>{
console.log(1);
return new Promise((resolve,reject)=>{
reject('失败了');
})
}).then(()=>{
console.log(3)
}).catch((err)=>{
console.log(err)
})
在1中失败以后,3不再执行
注意: catch以后的then还是会执行的,catch铺获的是所在位置以前的错误
网友评论