You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何处理Promise<string>的成功值与错误信息?

处理Fable中Promise的成功与错误

在Fable中处理Promise<string>的成功和错误,有几种常用的实用方式:

方式一:链式调用Promise.catch捕获错误

可以在处理成功逻辑的iter之后,追加catch来捕获并处理请求或执行过程中出现的错误:

open Fable.Core.JS

let response: Promise<string> = ApiClient.fetchGet "https://google.com"

response
    |> Promise.iter (fun successResponse ->
        printfn "成功获取响应:%s" successResponse
    )
    |> Promise.catch (fun error ->
        // 将JS错误对象转为字符串,若明确是Error实例也可直接取error.Message
        let errorStr = string error
        printfn "请求出错:%s" errorStr
    )

Promise.catch会捕获整个Promise链中出现的所有错误,包括API请求失败、iter内部抛出的异常等。

方式二:用iterResult统一处理成功与错误

如果希望把成功和错误的逻辑放在一处处理,可以先将Promise的错误映射为字符串,再通过iterResult分别处理两种情况:

open Fable.Core.JS
open Fable.Promise

let response: Promise<string> = ApiClient.fetchGet "https://google.com"

response
    // 将错误对象转为字符串,适配Result<string, string>类型
    |> Promise.mapError string
    // 分别传入成功和错误的处理函数
    |> Promise.iterResult (
        (fun successStr -> printfn "成功:%s" successStr),
        (fun errorStr -> printfn "错误:%s" errorStr)
    )

注意事项

  • JS Promise的错误可以是任意类型(不一定是标准Error对象),转换为字符串时可根据实际场景选择string error或error.Message(仅当确定是Error实例时可用)。
  • 所有Promise操作需要在支持异步的上下文执行,比如Fable应用的入口函数、React组件的生命周期方法等。

内容的提问来源于stack exchange,提问作者R A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:54:58