import { __awaiter, __generator } from "tslib";
/**
* 异步函数无需 try-catch,让异步编码开发体验更佳。
* 1. 减少 try-catch 引入的嵌套
* 2. 防止出现大而全的 try-catch
* 3. 自动推导类型,避免 try-catch 丢失类型
* 4. 最重要的是逼迫开发者将异常放到第一位去考虑,避免忘记 try-catch 导致 Unhandled Promise rejection
*
* @param promise Promise<T> Promise
* @returns 返回 tuple,失败则第一项是 `error`,成功第一项为 `undefined`,第二项是返回值
*
* @example
*
* const [error, resp] = await box(ajax.get(url));
* if (error || !resp.success) {
* const err = error || resp;
* console.log('error');
* throw err;
* }
* return resp;
*/
function box(promise) {
return __awaiter(this, void 0, void 0, function () {
var _a, error_1;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
_b.trys.push([0, 2, , 3]);
_a = [undefined];
return [4 /*yield*/, promise];
case 1: return [2 /*return*/, _a.concat([_b.sent()])];
case 2:
error_1 = _b.sent();
return [2 /*return*/, [error_1, undefined]];
case 3: return [2 /*return*/];
}
});
});
}
export default box;
//# sourceMappingURL=box.js.map