【发布时间】:2020-05-28 13:10:15
【问题描述】:
我是 fp-ts 的新手,所以请帮我解决我的问题: 我需要使用异步函数在不同级别上多次记录相同的错误。这是我的示例代码:
const myProgram = pipe(
tryCatch(() => someAsyncFunc(), toError),
mapLeft(async (err1) => {
await loggerAsyncFunc();
return err1;
}),
)
const main = pipe(
myProgram,
mapLeft((err2) => {
// err2 is a pending promise :(
})
)();
我正在使用mapLeft 来执行此操作,但它不起作用。
我需要做什么才能在err2 中有错误的值 (err1) 而不是挂起的承诺?
【问题讨论】:
-
你没有提供类型,所以我只能猜测
tryCatch返回一个Either。由于异步函数返回Promises,因此您可能有一个Either<Promise<A>, R>,也就是说,您需要将mapLeft与map类型的map实例组合在一起,FP-TS 希望提供这种类型。
标签: typescript asynchronous error-handling functional-programming fp-ts