看了 await-to-js
,不由得佩服大神的思路。看起来很简单,但是有时候很简单的方案就可以解决很看似很复杂的问题。
前置知识:
百度一下,基本全是官方文档照抄的内容,我就不超了,有不明白的同学自己去看吧。
两个版本,可以直接使用,跟 npm
下载的一样。
js 版本:
function to(promise, errorExt) {
return promise
.then(data => [null, data])
.catch(err => {
if (errorExt) {
Object.assign(err, errorExt);
}
return [err, undefined];
});
}
ts版本:
function to<T, U = any>(
promise: Promise<T>,
errorExt?: object
): Promise<[U | null, T | undefined]> {
return promise
.then<[null, T]>((data: T) => [null, data])
.catch<[U, undefined]>(err => {
if (errorExt) {
Object.assign(err, errorExt);
}
return [err, undefined];
});
}
文章评论