背景:反复try catch 请求 handleError 很麻烦
方案: await-to-js
应用:简单处理await 等异步错误 ,它可以有效地帮助我们写出健壮的异步逻辑,降低异步编写成本
/**
* @param { Promise } promise
* @param { Object= } errorExt - Additional Information you can pass to the err object
* @return { Promise }
*/
export function to<T, U = Error> (
promise: Promise<T>,
errorExt?: object
): Promise<[U, undefined] | [null, T]> {
return promise
.then<[null, T]>((data: T) => [null, data])
.catch<[U, undefined]>((err: U) => {
if (errorExt) {
const parsedError = Object.assign({}, err, errorExt);
return [parsedError, undefined];
}
return [err, undefined];
});
}
export default to;
其实这种方式 多了 还是 嵌套地狱
const getDetail = async () => {
try {
let res = await getWorkOrderDetail('id')
} catch (e) {
console.log("e", e);
message.error("获取详情失败!")
}
}
同层级 处理多个,解决地狱问题
const [err, user] = await to(getWorkOrderDetail('id'));
if(err) message.error("获取详情失败!")
]]>