如何解决为什么拒绝前一个诺言会阻止执行后一个诺言及其后的任何代码?
let jj = Promise.resolve('value')
let oo = new Promise((resolve,reject) => {
let randNo = Math.floor(Math.random() * 87)
if(randNo < 4) {
resolve('resolved')
} else {
reject('rej')
}
})
async function kk () {
console.log(await oo)
console.log(await jj)
console.log('async')
}
console.log('synchronous')
kk()
大家好,我正在学习JS中的promise和异步执行。我想知道为什么拒绝oo promise会阻止执行jj promise及其后的任何代码?谢谢
解决方法
由于引发错误会阻止执行紧随其后的任何代码的相同原因:
function k () {
throw 'rej'
console.log('value');
}
k();
被拒绝的诺言类似于引发异常,不同之处在于它是异步发生的。如果您需要赶上拒绝,可以这样做:
async function kk () {
try {
console.log(await oo)
} catch (err) {
console.log('caught an error',err);
}
console.log(await jj)
console.log('async')
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。