进度条无法使用带有 Angular cli 的 Service Worker

2023-12-19

我们正在开发 Angular(4) 应用程序,并使用 cli 启用服务工作人员

一切都很好,除了文件上传进度条停留在 0%,只有完成后才会达到 100%。

我们怀疑这是由于 Service Worker 造成的,因为我们在开发环境中没有看到它。

奇怪的是,根据我的理解,服务人员不应该处理帖子请求。

我们使用常规的HttpClient for it.

如何解决这个问题?

Edit:

现在我确信这与服务工作线程有关,因为当我在应用程序选项卡中按“绕过网络”时,它工作正常。


Angular Service Worker 正在过滤您的所有获取请求,并且当您需要它来更新文件上传进度时,您无法跟踪您的上传进度。这是需要考虑的重要事项,因为(也许)将来您需要这种请求 (FETCH) 来执行其他操作。 如果您使用的是最新版本的 Angular Service Worker,那么您可以在请求中添加标头,以告诉 Angular Service Worker (ngsw):嘿,不要过滤此请求中的 fetch 调用!

为了执行我上面提到的操作,您只需向 Http 调用添加一个标头,该标头必须是:{ 'ngsw-bypass': 'true' }

此标头将告诉 ngsw 必须让您的 httpClient 调用生成的所有 Fetch 传递。

例如:

HttpClient.post(apiPath, 
   formData, 
   { 
     reportProgress: true, 
     observe: 'events', 
     headers: new HttpHeaders({ 'ngsw-bypass': 'true' }) 
   }).subscribe({
      next(events) {
          if (events.type === HttpEventType.UploadProgress) {
              // Math.round((events.loaded / events.total) * 100)
          }
      }, complete() {
          // some code here
      }, error(error) {
          // some code here
      }
   })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

进度条无法使用带有 Angular cli 的 Service Worker 的相关文章

随机推荐

  • 是否可以在不终止会话的情况下终止oracle中的单个查询?

    我希望能够在 Oracle 10 2 0 4 中终止用户的查询 而不终止其整个会话 这将允许查询结束 但不会将该用户从会话中注销 以便他们可以继续进行其他查询 这有可能吗 或者终止会话的钝锤是结束查询执行的唯一方法吗 我发现了一个窍门 我不
  • AWS Cloudfront:凭证的范围应限定在有效区域

    通过 API 连接到 AWS CloudFront 时 无论我做什么 都会出现异常 Credential should be scoped to a valid region 相同的凭据适用于帐户有权执行的任何其他请求 例如 S3 该异常是
  • 使用 EntityFramework 4 为实体分配 id

    我想为我的实体实现 默认 ID 生成支持 保存实体时 我希望 EntityFramework 仅生成实体的 id 值 如果尚未设置 如果 ID 已经具有非空 非零值 我希望在将实体保存到数据库中时保留该实体 ID 我正在将数据从旧数据模型
  • phpcs:如何修改 PSR2 以检查大括号与方法在同一行?

    我现在花了 2 个多小时试图弄清楚如何要求 与方法声明在同一行 而不是默认要求在下一行 我怎样才能完成这件事 我已将 PSR2 标准复制到名为 PSR2 的新文件夹中 以便能够根据自己的喜好对其进行修改 所以我正在研究的基础基本上是我想要修
  • Microsoft.Build.Evaluation 的正确用法是什么?

    我想以编程方式将导入添加到 MSBuild 项目 这个APIMicrosoft Build Evaluation命名空间允许我这样做 我更愿意通过 VS 可扩展性 API 实现相同的结果 但似乎没有任何方法可以做到这一点 所以我求助于这个
  • C++ 编译器可以消除未读取的易失性局部变量吗

    说 我有这个代码 int f volatile int c c 34 return abc The 易失性 int c从来没有读过 但它被标记为volatile 编译器可以完全消除它吗 我在 Visual C 2010 中的测试显示了矛盾的
  • git“松散的对象...已损坏”-我丢失了哪些数据?

    我已经对本地分支做了一些提交 然后我尝试这样做git fetch 它失败并出现以下错误 fatal loose object 7b36029a951eacd979d24e993e020c4d018ca265 stored in git ob
  • HAL 锁定和解锁函数如何使用以及为什么?

    我试图理解另一位程序员编写的代码 它使用了I C http en wikipedia org wiki I C2 B2C通信以将数据写入 STM32 微控制器的 EEPROM 一般来说 我理解他的代码是如何工作的 但我不明白他为什么使用HA
  • UITableView 中的颜色交替 UITableViewCell?

    我试图使用此方法在表视图中为备用 tableCell 着色链接到颜色单元格 http blog apoorvmote com customize uitableviewcell background color ios 8 swift 用这
  • 我可以设置 Vert.x HTTP 请求队列的容量吗?

    我用 Java 编写了一个 Vert x HTTP 服务器 当客户端发送请求的速度快于服务器处理请求的速度时 服务器端请求队列会慢慢填满 最终 JVM 由于所有累积的请求而耗尽内存 我可以设置 Vert x 请求队列的容量吗 我想设置以下一
  • 我应该使用什么 OSX/XCode 版本控制系统来进行 iPhone 开发?

    我一直在兼职开发我的第一个 iPhone 应用程序 并希望开始使用比过去四个月更严格的版本控制形式 即将源代码文件夹复制到另一个目录并为其添加时间戳 我使用过 SourceSafe 和 Team Foundation System 但不太清
  • 导入并运行文件夹中的所有模块

    有没有办法导入并运行文件夹中的所有 py 文件 基本上我认为 pytest 是如何进行测试发现的 似乎我想从文件路径导入到列表中 然后在每个模块上调用 main args 迭代列表 它还需要兼容 python 2 和 3 Example s
  • 变量中 Linq 查询的 Lambda 表达式

    如何定义要在 linq 查询中用作变量的 lambda 表达式 例如 当按列表项的不同属性对通用列表进行排序时 IList
  • 找到Python解释器的完整路径?

    如何从当前执行的 Python 脚本中找到当前运行的 Python 解释器的完整路径 sys executable包含当前运行的Python解释器的完整路径 import sys print sys executable 现在是记录在这里
  • 将 PHP 实体(如 – 或 š)转换为其适用的字符

    有没有办法将 HTML 实体转换为其适用的字符 类似的东西html entity decode 我正在尝试从 TinyMCE 输出中制作没有 HTML 实体的普通文本 根据用户贡献的笔记 http de php net manual en
  • IE11 中的 http 伪流

    我有一些视频 我需要能够找到其中的各个点 而无需在该点之前下载整个视频 到目前为止 我使用带有 NodeJS 的 html5 视频标签和 vid streamer 模块 在 Firefox 和 Chrome 中运行得很好 然而 IE 11
  • 选择数组结束项的最有效方法?

    我正在寻找最有效的方法 即按下较小的键 来索引数组的最后一个元素 然后像 a lt c 1 2 3 n lt length a b lt a n 不应该使用 我想只使用一个命令 在上面的例子中我可以使用 b lt a length a 但我
  • Android 清除/完成之前的活动(除了一项)

    在android中我有以下路径 活动 1 gt 活动 2 gt 活动 3 gt 活动 N gt 按下按钮 当按下按钮时 我想清除 完成从活动 2 到 N 的所有活动 然后转到活动 X 换句话说 我想完成所有活动 直至最初的一个 然后移至另一
  • 在 R 中识别传单中栅格上的点击位置

    我正在绘制一个大型经纬度 NetCDFraster超过一个Rleaflet地图使用shinydashboard 当我单击地图时 会出现一个弹出窗口 显示行 列 经纬度位置和单击的栅格点的值 参见下面的可重现代码 问题是 如果栅格足够大 我会
  • 进度条无法使用带有 Angular cli 的 Service Worker

    我们正在开发 Angular 4 应用程序 并使用 cli 启用服务工作人员 一切都很好 除了文件上传进度条停留在 0 只有完成后才会达到 100 我们怀疑这是由于 Service Worker 造成的 因为我们在开发环境中没有看到它 奇怪