1.Promise异常传透?
(1)Promise的then()返回一个新的Promise,可以开成then的链式调用 (2)通过then的链式调用串联多个同步/异步任务
<script>
new Promise((resolve, reject) => {
setTimeout(() => {
console.log('执行任务1(异步)')
resolve(1)
}, 1000)
}).then(
value => {
console.log('任务1的结果:', value)
console.log('执行任务2(同步)')
return 2
}
).then(
value => {
console.log('任务2的结果:', value)
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('执行任务3(异步)')
resolve(3)
}, 1000)
})
},
).then(
value => {
console.log('任务3的结果:', value)
}
)
</script>
2.中断Promise链?
(1) (throw reason)//抛出异常 (2) return Promise.reject(reason) //返回一个失败状态的Promise (3) return new Promise(()=>{}) //返回一个新的Pending状态的Promise
<script>
// (1)Promise的then()返回一个新的Promise,可以开成then的链式调用
// (2)通过then的链式调用串联多个同步/异步任务
new Promise((resolve, reject) => {
// resolve(1)
reject(1)
}).then(
value => {
console.log('onResolved1()', value)
return 2
},
//reason => {throw reason} //错误的回调写与不写都可以。但是要知道如何写
).then(
value => {
console.log('onResolved2()', value)
return 3
},
).then(
value => {
console.log('onResolved3()', value)
},
).catch(
resaon => {
console.log('onRejected1()', resaon)
//这里如果不抛异常,不进行return的话,就会进行成功的回调
// 以下中断成功的链式回调
//throw reason
//return Promise.reject(reason)
//return new Promise(()=>{}) 返回一个新的Pending状态的Promise
}
).then(
value => {
},
resaon => {
}
)
</script>
|