Promise的学习
Promise的使用
function foo() {
return new Promise((resolve, reject) => {
reject('err')
})
}
const promise2 = foo()
promise2.then(res => {
console.log(res);
},err => {
console.log(err);
})
const promise1 = foo()
promise1.then(res => {
console.log(res);
}).catch(err => {
console.log(err);
})
function bar(fn) {
fn()
}
bar(() => {
})
Promise的三种状态
new Promise((resolve, reject) => {
console.log('立即执行');
resolve('success')
reject('err')
console.log('还是会执行');
}).then(res => {
console.log(res);
}, err => {
console.log(err);
})
Promise的resolve参数
new Promise((resolve, reject) => {
const obj = {
then(resolve, reject){
resolve('success!!!')
}
}
resolve(obj)
}).then(res => {
console.log(res);
}, err => {
console.log(err);
})
Promise对象方法~then
const promise = new Promise((resolve, reject) => {
resolve('success~~')
})
promise.then(res => {
return 'aaaaaa'
}).then(res => {
console.log(res)
return 'bbbbbbb'
}).then(res => {
console.log(res)
}).catch(err => {
})
promise.then(res => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('xxxxxxxxxx')
}, 3000);
})
}).then(res => {
console.log(res);
})
promise.then(res => {
return {
then(resolve, reject) {
resolve('----------')
}
}
}).then(res => {
console.log(res)
})
Promise对象方法~catch
const promise = new Promise((resolve, reject) => {
resolve('success!')
})
promise.then(res => {
return new Promise((resolve, reject) => {
reject('then err~')
})
}).catch(err => {
console.log(err)
})
const p = new Promise((resolve, reject)=>{
reject('errr')
})
p.catch(err => {
return 'messages!!!'
}).then(res => {
console.log('res:', res)
}).catch(err => {
console.log('err:', err);
})
Promise对象方法~finally
const promise = new Promise((resolve, reject) => {
resolve('success!')
})
promise.then(res => {
console.log(res);
}).finally(()=>{
console.log('我必执行~');
})
Promise类方法~resolve
const promise = Promise.resolve({ name: 'Fhup' })
promise.then(res => {
console.log('res:', res)
})
const p = Promise.resolve(new Promise((resolve, reject)=>{resolve('----------')}))
p.then(res => {
console.log('res:', res)
})
Promise类方法~reject
const promise = Promise.reject('err messages')
promise.catch(err => {
console.log('err:', err)
})
Promise类方法~all
Promise.all([
new Promise((resolve, reject)=>{
setTimeout(() => {
resolve('aaaaaaaaa')
}, 1000);
}),
new Promise((resolve, reject)=>{
setTimeout(() => {
resolve('bbbbbbb')
}, 2000);
}),
'12323213123'
]).then((res)=>{
console.log(res)
}).catch(err => {
console.log(err)
})
Promise类方法~allSettled
Promise.allSettled([
new Promise((resolve, reject)=>{
setTimeout(() => {
resolve('aaaaaaaaa')
}, 1000);
}),
new Promise((resolve, reject)=>{
setTimeout(() => {
reject('errrrrrrrrrrrr')
}, 2000);
}),
]).then((res)=>{
console.log(res)
})
Promise类方法~race
Promise.race([
new Promise((resolve, reject)=>{
setTimeout(() => {
resolve('aaaaaaaaa')
}, 1000);
}),
new Promise((resolve, reject)=>{
setTimeout(() => {
reject('errrrrrrrrrrrr')
}, 500);
})
]).then(res => {
console.log('res:', res);
}).catch(err => {
console.log('err:', err);
})
Promise类方法~any
Promise.any([
new Promise((resolve, reject)=>{
setTimeout(() => {
resolve('aaaaaaaaa')
}, 1000);
}),
new Promise((resolve, reject)=>{
setTimeout(() => {
reject('errrrrrrrrrrrr')
}, 500);
})
]).then(res => {
console.log('res:', res)
}).catch(err => {
console.log('err:', err)
console.log(err.errors)
})