我有如下代码
try {
const result = await doSomething();
}
catch {
console.log('Error loaidng rejected data');
}
// rest of code
我的问题是在catch段中没有做任何事情。我只是包含它以防万一出现错误,如果我删除catch,整个代码会崩溃。有没有办法在不使用catch和promise的情况下实现同样的效果?
我有如下代码
try {
const result = await doSomething();
}
catch {
console.log('Error loaidng rejected data');
}
// rest of code
我的问题是在catch段中没有做任何事情。我只是包含它以防万一出现错误,如果我删除catch,整个代码会崩溃。有没有办法在不使用catch和promise的情况下实现同样的效果?
这是一个Promise,因此您可以忽略catch
函数。
const result = await doSomething().catch(() => null);
在错误情况下不执行任何操作,您的代码将继续执行下一行,但在此情况下(错误情况),result
未定义。
没有promise,我能做吗?
不行,await只是用来包装promise的语法糖。如果你的异步函数不返回promise,那么使用await就没有意义。
你可以在doSomething内部捕获错误,并解析为null或undefined以保持正常运作。
Original Answer翻译成"最初的回答"。
是的,大多数时候try/catch块都很庞大,为了使其简洁,您可以利用await-to-js
库。因此,我们可以像下面这样使用。
const [err, result] = await to(doSomething());
https://github.com/scopsy/await-to-js
复制了源代码。export function to<T, U = Error> (
promise: Promise<T>,
errorExt?: object
): Promise<[U | null, T | undefined]> {
return promise
.then<[null, T]>((data: T) => [null, data])
.catch<[U, undefined]>((err: U) => {
if (errorExt) {
Object.assign(err, errorExt);
}
return [err, undefined];
});
}
export default to;