promise中断
function wrap(p1){
let abort;
let p2 = new Promise((resolve,reject)=>{
abort = function(){
reject('失败');
}
});
let p = Promise.race([p1,p2]);
p.abort = abort;
return p;
}
let p = wrap(new Promise((resolve,reject)=>{
setTimeout(() => {
resolve();
}, 3000);
}))
p.then(()=>{},()=>{console.log('失败')})
p.abort();
// 1
let p = new Promise((resolve,reject)=>{
reject();
resolve();
});
p.then(()=>console.log('成功'),()=>console.log('失败'));
//失败
const promise = new Promise((resolve,reject)=>{
console.log(1);
resolve();
console.log(2);
})
promise.then(()=>{
console.log(3);
})
//1
//2
//3
Promise.resolve(1)
.then(res=>2)
.catch(err=>3)
.then(res=>console.log(res));
//2
Promise.resolve(1)
.then(x=>x+1)
.then(x=>{throw new Error('My Error')})
.catch(()=>1)
.then(x=>x+1)
.then(x=>console.log(x))
.catch(console.error)
//2