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) ?? [];// []