Skip to content

tryAsyncCall

将异步函数调用包裹在 try-catch 中,返回 Promise<[error, result]> 元组而非抛出异常。同步函数请使用 tryCall

用法

ts
import { tryAsyncCall } from 'rattail'

const [err, result] = await tryAsyncCall(() => fetch('/api'))
// [undefined, Response]

const [err2, result2] = await tryAsyncCall(async () => {
  throw new Error('fail')
})
// [Error, undefined]

// 直接传参
const [err3, result3] = await tryAsyncCall(fetch, '/api')
// [undefined, Response]

const asyncAdd = async (a: number, b: number) => a + b
const [err4, result4] = await tryAsyncCall(asyncAdd, 1, 2)
// [undefined, 3]

参数

参数类型说明
fn(...args: Args) => Promise<T>异步函数
...argsArgs传递给 fn 的参数

返回值

类型
Promise<[unknown, undefined] | [undefined, T]>