1.resolve(),reject()分別對應then(),.catch()
let promise = new Promise((resolve, reject) => {
reject()
//可以傳參,如:resolve(1111),那麼.then的response可以接受這個參數。
//reject(2222),那麼.catch的error可以接受這個參數。
}
2..then(),.catch(),分別對應resolve(),reject()。
<script>
let promise = new Promise((resolve, reject) => {
reject(111)
})
promise.then(response => { //調用resolve()時執行
console.log('成功')
console.log(response) //控制檯打印111
}).catch(error =>{
console.log('222') //如果promise實例調用reject(),控制檯會輸出222
})
</script>
3.鏈式
function promise1(status){
return new Promise((resolve,reject) => {
if(status){
console.log('promise1 resolve')
resolve('promise1返回數據成功')
}
if(!status){
console.log('promise1 reject') //打印在控制檯
reject('promise1返回數據失敗') //reject()內的參數打印在出錯信息裏,
//.then或者.error接收參數之後,可以console.log(response),此時就會輸出在控制檯
}
reject(222)
})
}
function promise2(status){
return new Promise((resolve,reject) => {
if(status){
console.log('promise2 resolve')
resolve('promise2返回數據成功')
}
if(!status){
console.log('promise2 reject')
reject('promise2返回數據失敗')
}
reject(222)
})
}
function promise3(status){
return new Promise((resolve,reject) => {
if(status){
console.log('promise3 resolve')
resolve('promise3返回數據成功')
}
if(!status){
console.log('promise3 reject')
reject('promise3返回數據失敗')
}
reject(222)
})
}
promise1(true)
promise1(false).then(response => {//單獨調用
console.log(response)
}).catch(error => {
conlole.log(err)
})
promise1(false).then(response => {//鏈式調用
console.log(response)
return promise3(true)
}).then(response => {
console.log(response)
return promise2(false)
}).catch(error => {
console.log(error)
}).catch(error => {
conlole.log(err)
})
4..all()數組內有promi,必須全部成功纔會執行.then回調,有一個不成功就會執行.catch
Promise.all([promise1(true),promise2(true),promise3(false)]).then(response => {
console.log('全部調用成功')
}).catch(error => {
console.log('沒有全部調用成功')
})
5. .race(),數組內遇到返回結果爲resolve就會繼續鏈式執行,即只要有一個是resolve,就代表成功,但是如果第一個promise結果是reject,則失敗。
Promise.all([promise1(true),promise2(true),promise3(false)]).then(response => {
console.log('全部調用成功')
}).catch(error => {
console.log('沒有全部調用成功')
})
Promise.all([promise1(false),promise2(true),promise3(false)]).then(response => {
console.log('全部調用成功')
}).catch(error => {
console.log('沒有全部調用成功')
})