小编Ant*_*ris的帖子

上传获取的进度指标?

我很难找到使用fetch实现上传进度指示器的文档或示例.

这是迄今为止我发现的唯一参考资料,其中指出:

进度事件是一个高级功能,暂时无法获取.您可以通过查看Content-Length标头并使用传递流来监视接收的字节来创建自己的标头.

这意味着您可以无需另外明确地处理响应Content-Length.当然,即使在Content-Length那里也可能是谎言.使用流可以根据需要处理这些谎言.

如何编写"传输流来监控字节"发送?如果它产生任何差异,我正在尝试这样做以支持从浏览器到Cloudinary的图像上传.

注意:我对Cloudinary JS库感兴趣,因为它依赖于jQuery而我的应用程序没有.我只对使用原生javascript和Github的polyfill 执行此操作所需的流处理感兴趣.fetch


https://fetch.spec.whatwg.org/#fetch-api

javascript html5 fetch-api

74
推荐指数
8
解决办法
4万
查看次数

我们可以明确捕获 Puppeteer (Chrome/Chromium) 错误 net::ERR_ABORTED 吗?

我们可以明确且具体地捕获 Puppeteer (Chrome/Chromium) 错误吗net::ERR_ABORTED?或者字符串匹配是目前唯一的选择?

page.goto(oneClickAuthPage).catch(e => {
  if (e.message.includes('net::ERR_ABORTED')) {}
})

/*  "net::ERROR_ABORTED" occurs for sub-resources on a page if we navigate
 *  away too quickly. I'm specifically awaiting a 302 response for successful
 *  login and then immediately navigating to the auth-protected page.
 */
await page.waitForResponse(res => res.url() === href && res.status() === 302)
page.goto(originalRequestPage)
Run Code Online (Sandbox Code Playgroud)

理想情况下,这类似于我们可以捕获的潜在事件page.on('requestaborted')

javascript google-chrome chromium puppeteer

13
推荐指数
1
解决办法
4897
查看次数

如何在ArrayBuffer,DataView和TypedArray中测试相等性

有没有办法测试两个JavaScript ArrayBuffers是否相等?我想为消息编写方法编写测试.我找到的唯一方法是将ArrayBuffer转换为字符串然后进行比较.我错过了什么?

以下代码是假的,即使我认为它应该是真的:

(function() {
    'use strict';

    /* Fill buffer with data of Verse header and user_auth
     * command */
    var buf_pos = 0;
    var name_len = 6
    var message_len = 4 + 1 + 1 + 1 + name_len + 1;

    var buf = new ArrayBuffer(message_len);
    var view = new DataView(buf);
    /* Verse header starts with version */
    view.setUint8(buf_pos, 1 << 4); /* First 4 bits are reserved for version of protocol */
    buf_pos += 2;
    /* The lenght …
Run Code Online (Sandbox Code Playgroud)

javascript typed-arrays arraybuffer

11
推荐指数
4
解决办法
8242
查看次数

如何从 WebM 文件中提取音频

我只想获取仅在 webm 文件中的音频文件(使用 opus 编解码器)。我尝试搜索什么是 webm 格式,如何解析,但我无法很好地获取信息。我检查webm格式来自mkv,那么我应该先检查mkv吗?

只有一个 github 代码,但我找不到如何解析 webm 音频的方法。 https://github.com/webmproject/libwebm/tree/master/webm_parser

parsing mkv webm opus

8
推荐指数
2
解决办法
1万
查看次数

获取 API 下载进度指示器?

我正在尝试捕获 Fetch 请求的下载进度并使用它来更改进度条的宽度。我将 ProgressEvent.lengthComputable 视为一个潜在的解决方案,但不确定这是否可以与 Fetch API 一起使用。

javascript

6
推荐指数
3
解决办法
5832
查看次数

使用Service Worker缓存文件时显示进度

我对JavaScript不太熟悉,很难招募服务人员。

我想使用服务人员使整个Web应用程序脱机使用,以在页面加载时缓存必要的文件。尽管这是可行的,但要花很多时间才能将所有文件下载到磁盘上,这会使浏览器无响应,并且用户不耐烦。

我想知道,当服务人员不断努力时,显示进度的最佳方法是什么?以“下载文件25 of 100”的方式。

客户如何知道服务人员的进度?由于工作人员没有DOM访问权限。我必须在工作人员和客户端之间使用消息吗?

这是我在这里的第一个问题,希望我清楚自己,不要发布重复的内容(找不到任何东西)并遵守所有规则。

在此先感谢您的帮助或指导。

javascript progress progress-bar service-worker

5
推荐指数
1
解决办法
1601
查看次数

如何在 React 中使用 Emscripten JavaScript 文件

我正在尝试将一个 JavaScript 文件导入到使用 Emscripten 从 C 代码编译的 React 中。这类似于这里的这个问题但答案似乎不起作用。目标是能够在 JS 文件中导入函数并像调用命名函数一样调用它。我编译JS文件与MODULARIZE=1WASM=0使用下面的命令:

emcc ../../helloWorld/ping.c -o ../../helloWorld/ping.js -s WASM=0 -s ENVIRONMENT=web -s EXTRA_EXPORTED_RUNTIME_METHODS="['cwrap']" -s MODULARIZE=1
Run Code Online (Sandbox Code Playgroud)

ping.c

#include <stdio.h>
#include <emscripten.h>

EMSCRIPTEN_KEEPALIVE
int pingIt() {
  return 1;
}
Run Code Online (Sandbox Code Playgroud)

导入PingIt.js

let Module = require('./ping.js'); // Your Emscripten JS output file
let pingIt = Module().cwrap('pingIt'); // Call Module as a function

Module.exports = pingIt;
Run Code Online (Sandbox Code Playgroud)

应用程序.js

import React from 'react';
import './App.css';
import pingIt from './importPingIt.js';

export default …
Run Code Online (Sandbox Code Playgroud)

javascript emscripten reactjs

5
推荐指数
1
解决办法
555
查看次数

如何将外部 C 库链接到 WebAssembly 构建

我正在阅读这篇文章(https://www.smashingmagazine.com/2019/04/webassembly-speed-web-app/),其中解释了他们如何使用 zlib 等来加速他们的 Web 项目:

为了支持 zlib 库,我们使用标志 USE_ZLIB;zlib 是如此普遍以至于它已经被移植到 WebAssembly,并且 Emscripten 会在我们的项目中为我们包含它

我想在我自己的 WASM 模块中使用 zlib。

在我的 C 代码(用 emcc 编译)中,我编写了这个接口函数:

#include <zlib.h>

int pcf_decompress_zlib(unsigned char *input, int input_length, unsigned char *output, int output_length)
{
    uLongf output_length_result = output_length;
    int result = uncompress(output, &output_length_result, input, input_length);
    if (result != Z_OK) {
        return 0;
    } else {
        return output_length_result;
    }
}
Run Code Online (Sandbox Code Playgroud)

我是这样编译的:

emcc decompress.c -O3 -s WASM=1 -s SIDE_MODULE=1 -s "EXPORTED_FUNCTIONS=['_pcf_decompress_zlib']" -s USE_ZLIB=1 -o decompress.wasm
Run Code Online (Sandbox Code Playgroud)

当我这样做时,emcc 自动下载到一个 zlib …

zlib webassembly

5
推荐指数
1
解决办法
717
查看次数

如何使用 Webpack 5 和 Babel 7 创建 IE11 Bundle

我们如何将现代 JavaScript 编译成可与 Internet Explorer 11 (ie11) 一起使用的向后兼容的 JavaScript 包?具体来说,我们如何使用最新版本的 Webpack 5 和 Babel 7 做到这一点?

javascript internet-explorer-11 webpack babeljs babel-loader

5
推荐指数
1
解决办法
2056
查看次数

检测 Service Worker 的获取中止

如果 Service Worker 中止获取请求,应用程序是否可以专门接收“中止”异常?

fetch在 Service Worker 中显式中止请求,相反,应用程序仅收到 a TypeError,这感觉不明确,并且并不明确指示发生中止。

完整代码:service-worker.js

self.addEventListener('fetch', event => {
  const controller = new AbortController()
  const signal = controller.signal

  event.respondWith(
    fetch(event.request, { signal })
      .catch(e => {}) // prevent uncaught error message in console
      .finally(() => removeAbortController(...))
  )

  // immediately abort the request to exemplify
  controller.abort()
})
Run Code Online (Sandbox Code Playgroud)

javascript service-worker

5
推荐指数
0
解决办法
357
查看次数