【发布时间】:2020-12-27 18:18:58
【问题描述】:
在 Javascript 中的异步生成器函数中,它旨在用作转换函数,第一个参数本身就是一个异步生成器函数。 在函数中有一个转换和一个检查。如果检查是假的,则应该中止生成器函数。如果检查是正确的,则应该产生结果。我已经用随机数模拟了错误。
我找到了三种抛出错误的方法:
- return Promise.reject(new Error("Some Message"));
- throw new Error("Some Message.");
- yield Promise.reject(new Error("Some Message"));
export async function* transformAsync<T>(
source: AsyncGenerator<T, void, unknown>,
) {
for await (const line of source) {
const transformedLine = transformWithSomeMagic(line);
if(Math.random() > 0.8) {
return Promise.reject(new Error("Some Message"));
// OR
throw new Error("Some Message.");
// OR
yield Promise.reject(new Error("Some Message"));
}
yield transformedLine;
}
}
结果对所有人都是一样的。我想知道使用流作为源参数时区别在哪里以及是否存在泄漏,因为它们是兼容的。
【问题讨论】:
标签: javascript typescript asynchronous error-handling yield