- Vue 3 + TypeScript + Element Plus 前端界面 - Pinia 状态管理 - Vue Router 4 路由管理 - Axios HTTP 客户端 - MSW (Mock Service Worker) 开发环境模拟 - 账户管理界面 (列表、详情、三科目余额展示) - 交易管理界面 (列表、详情) - 对账管理界面 (三账校验) - 完善的 API 客户端封装 - Docker 容器化配置 - Nginx 配置用于生产环境
69 lines
1.4 KiB
JavaScript
69 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, '__esModule', {
|
|
value: true,
|
|
});
|
|
exports.mapAsyncIterator = mapAsyncIterator;
|
|
|
|
/**
|
|
* Given an AsyncIterable and a callback function, return an AsyncIterator
|
|
* which produces values mapped via calling the callback function.
|
|
*/
|
|
function mapAsyncIterator(iterable, callback) {
|
|
const iterator = iterable[Symbol.asyncIterator]();
|
|
|
|
async function mapResult(result) {
|
|
if (result.done) {
|
|
return result;
|
|
}
|
|
|
|
try {
|
|
return {
|
|
value: await callback(result.value),
|
|
done: false,
|
|
};
|
|
} catch (error) {
|
|
/* c8 ignore start */
|
|
// FIXME: add test case
|
|
if (typeof iterator.return === 'function') {
|
|
try {
|
|
await iterator.return();
|
|
} catch (_e) {
|
|
/* ignore error */
|
|
}
|
|
}
|
|
|
|
throw error;
|
|
/* c8 ignore stop */
|
|
}
|
|
}
|
|
|
|
return {
|
|
async next() {
|
|
return mapResult(await iterator.next());
|
|
},
|
|
|
|
async return() {
|
|
// If iterator.return() does not exist, then type R must be undefined.
|
|
return typeof iterator.return === 'function'
|
|
? mapResult(await iterator.return())
|
|
: {
|
|
value: undefined,
|
|
done: true,
|
|
};
|
|
},
|
|
|
|
async throw(error) {
|
|
if (typeof iterator.throw === 'function') {
|
|
return mapResult(await iterator.throw(error));
|
|
}
|
|
|
|
throw error;
|
|
},
|
|
|
|
[Symbol.asyncIterator]() {
|
|
return this;
|
|
},
|
|
};
|
|
}
|