Phi*_*tin 2 error-handling promise typescript
我有许多函数,它们都在返回承诺时执行完全相同的操作。this.client是一组 API 调用的包装器,它们返回响应或错误。我希望以同样的方式处理这些。
有什么想法可以将这些方法中的每一种减少到一个衬垫中吗?
getHealthCheck() {
return this.client.tools.healthcheck().then((response) => {
return {success: true, result: response};
}).catch((err) => {
return {success: false, err: err };
});;
}
createUser(data) {
return this.client.users.create(data).then((response) => {
return {success: true, result: response};
}).catch((err) => {
return {success: false, err: err };
});;
}
createCardAccount(data) {
return this.client.cardAccounts.create(data).then((response) => {
return {success: true, result: response};
}).catch((err) => {
return {success: false, err: err };
});;
}
createBankAccount(data) {
return this.client.bankAccounts.create(data).then((response) => {
return {success: true, result: response};
}).catch((err) => {
return {success: false, err: err };
});;
}
makePayment(data) {
return this.client.items.makePayment(data).then((response) => {
return {success: true, result: response};
}).catch((err) => {
return {success: false, err: err };
});;
}
Run Code Online (Sandbox Code Playgroud)
为什么不将响应提升为另一种类型:
type Success<T> = {success: true, result: T};
type Failure = {success: false, err: Error};
type Result<T> = Success<T> | Failure;
const Result = {
from<T>(promise: Promise<T>): Promise<Result<T>> {
return promise
.then(result => ({success: true, result}))
.catch(err => ({success: false, err}));
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样使用它:
return Result.from(this.client.tools.healthcheck());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1925 次 |
| 最近记录: |