Skip to content

fix: Ensure checkOk is called after fetch response #6#7

Open
clddup wants to merge 1 commit intoyokingma:mainfrom
clddup:main
Open

fix: Ensure checkOk is called after fetch response #6#7
clddup wants to merge 1 commit intoyokingma:mainfrom
clddup:main

Conversation

@clddup
Copy link

@clddup clddup commented Nov 10, 2025

Title:

  • 修复当http状态码自定义时,onOpen无法预期工作

Description: (optional)

Motivation: (optional)

Related Issues: (optional)

@yokingma
Copy link
Owner

Hi @clddup,

感谢你的 PR!我理解你想要在自定义状态码场景下让 onOpen 能够正常工作的需求。

不过,直接改变调用顺序会是一个 breaking change,因为这会改变 API 的默认行为 —— 即使响应状态码是错误的(如 4xx、5xx),onOpen 也会被调用。

更好的方案

我已经在 main 分支实现了一个更好的解决方案:添加了一个 skipStatusCheck 配置选项。这个方案:

向后兼容 - 默认行为不变,不会破坏现有代码
灵活可控 - 用户可以选择是否跳过状态检查
语义清晰 - 通过显式的配置项表达意图

使用方式

await fetchEventData('/api/sse', {
  skipStatusCheck: true,  // 跳过状态检查
  onOpen: (res) => {
    // 即使状态码不是 2xx 也会被调用
    console.log('Response status:', res.status);
    if (res.status === 299) {
      // 处理自定义状态码
    }
  },
  onMessage: (event) => {
    console.log(event.data);
  }
})

相关提交

  • Commit: c0f88e7
  • 版本: 1.2.0
  • 包含完整的测试用例和文档

你可以直接使用最新版本的 fetch-sse@1.2.0,它已经包含了这个功能。如果这个方案满足你的需求,这个 PR 可以关闭了。

如果有任何问题或建议,欢迎继续讨论!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants