问题 1:异步异常在 Promise 回调里面.
// 异步异常
new Promise((resolve, reject) => {
setTimeout(() => {
throw "err";
}, 0);
})
.then((value) => {
console.log(value);
})
.catch((reason) => {
console.log(reason);
});
// 控制台抛出错误
// 同步异常
new Promise((resolve, reject) => {
throw "err";
})
.then((value) => {
console.log(value);
})
.catch((reason) => {
console.log(reason);
});
// output: err
// 同步异常 Promise 的状态
const p = new Promise((resolve, reject) => {
throw "err";
})
// output: rejected
// 异步异常 Promise 的状态
const p = new Promise((resolve, reject) => {
setTimeout(() => {
throw "err";
});
})
// output: pending
问题 2:异步异常在 then/catch 回调里面.
// 异步异常
Promise.resolve().then(()=>{
setTimeout(()=>{
throw 'err'
},0)
}).catch((err)=>{
err
}).then((value)=>{
console.log(value)
})
// 输出:
// undefined
// x Uncaught err
// 同步异常
Promise.resolve().then(()=>{
throw 'err'
}).catch((err)=>{
console.log(err)
}).then((value)=>{
console.log(value)
})
// 输出:
// err
// undefined
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.