Skip to content

guard

使异步函数在拒绝时返回undefined

144 bytes
since v12.1.0

使用方法

guard 函数允许您让异步函数在拒绝时返回 undefined。这在您想要以函数式方式处理错误(例如返回默认值)时很有用。

import * as _ from "radashi";
const example = async () => {
throw new Error();
};
const result = (await _.guard(example)) ?? [];
// []

仅保护特定错误

guard 的第二个参数是错误谓词。如果提供,该函数仅在错误匹配谓词时返回 undefined

import * as _ from "radashi";
const DEFAULT_USER = { name: "John Doe" };
async function fetchUser(id: string) {
if (id === "unknown") throw new Error("User does not exist");
if (id === "oops") throw new ReferenceError();
return { name: "Jim Jimmy" };
}
const isPlainError = (err: any) => err.name === "Error";
const userA =
(await _.guard(() => fetchUser("unknown"), isPlainError)) ?? DEFAULT_USER;
// { name: "John Doe"}
// 这一个将拒绝。
const userB = await _.guard(() => fetchUser("oops"), isPlainError).catch(
(e) => e
);
// [object ReferenceError]

同步保护

guard 函数也适用于同步函数。

import * as _ from "radashi";
function example() {
throw new Error();
}
const result = _.guard(example) ?? [];
// []