相关疑难解决方法(0)

使用返回promise的函数过滤数组

特定

let arr = [1,2,3];

function filter(num) {
  return new Promise((res, rej) => {
    setTimeout(() => {
      if( num === 3 ) {
        res(num);
      } else {
        rej();
      }
    }, 1);
  });
 }

 function filterNums() {
   return Promise.all(arr.filter(filter));
 }

 filterNums().then(results => {
   let l = results.length;
   // length should be 1, but is 3
 });
Run Code Online (Sandbox Code Playgroud)

长度为3,因为返回了Promises,而不是值.有没有办法用返回Promise的函数过滤数组?

注意:对于此示例,fs.stat已替换为setTimeout,请参阅https://github.com/silenceisgolden/learn-esnext/blob/array-filter-async-function/tutorials/array-filter-with-async- function.js用于特定代码.

javascript arrays ecmascript-6 es6-promise

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

如何在 JavaScript 中比较两个 blob?

我使用下面的代码在 JavaScript 中加载两个 blob 文件。

我想比较一下它们是否完全相同。

(blob1 === blob2) 返回 false,即使每个 blob 的报告大小为 574 字节。我究竟做错了什么?

  getHTTPAsBlob(url, callback) {
    let cacheBust = Math.random().toString()
    url = url + '?&cachebust=' + cacheBust
    let xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'blob';
    xhr.onload = function (e) {
      if (xhr.status == 200) {
        // get binary data as a response
        let fileData = this.response;
        let contentType = xhr.getResponseHeader("content-type")
        var reader = new FileReader()
        reader.onload = (e) => {
          console.log(reader.result)
          console.log(fileData)
          callback(null, {
              Body: …
Run Code Online (Sandbox Code Playgroud)

javascript xmlhttprequest xmlhttprequest-level2

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