/**
* @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;
function to(promise,errorExt={}){
return ( promise.then
((data) => [null, data]).catch
((err) => {
if (errorExt) {
const parsedError = Object.assign({}, err, errorExt);
return [parsedError, undefined];
}
return [err, undefined];
}))
}
async function foo() {
const [error, result] = await to(Promise.resolve(1));
console.log(result); // 1
console.log(error); // null
const [error1, result1] = await to(Promise.reject("error错误了"));
console.log(result1); // undefined
console.log(error1); // error错误了
console.log("代码还能正常执行");
}
foo();