首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Blob到Uint8Array,不需要回调

Blob到Uint8Array,不需要回调
EN

Stack Overflow用户
提问于 2021-09-01 13:30:58
回答 1查看 1.9K关注 0票数 2

可以不使用回调而只使用Uint8Array将Blob转换为JavaScript吗?

如何为调用变量uint8array返回uint8data

代码语言:javascript
复制
let str='content';

str2blob=(str,type='text/plain')=>new Blob([str],{type:type});

let blob=str2blob(str);

function blob2uint(blob){
    new Response(blob).arrayBuffer().then(buffer=>{
        uint=[...new Uint8Array(buffer)];
        console.log("Uint8Array",uint);
        return uint;
    });
}

let uint8data=blob2uint(blob);
console.log(uint8data); //Show Uint8Array
EN

回答 1

Stack Overflow用户

发布于 2021-09-01 13:47:06

假设这是函数中的某个位置,您可以使其异步,并使用等待等待承诺完成,一旦您从blob2uint函数返回它:

代码语言:javascript
复制
async function myBlobToUIntDemo() {
  let str='content';

  str2blob=(str,type='text/plain')=>new Blob([str],{type:type});

  let blob=str2blob(str);  

  function blob2uint(blob){
      return new Response(blob).arrayBuffer().then(buffer=>{
          uint=[...new Uint8Array(buffer)];
          console.log("Uint8Array",uint);
          return uint;
      });
  }
  
  let uint8data = await blob2uint(blob);
  console.log(uint8data); //Show Uint8Array
}

让我们提供一些更多的信息:

为什么我一开始就需要回调?

因为您是通过从响应中提取arrayBuffer来执行异步工作的。JavaScript (据我所知)只在一个线程中运行。在代码中等待一个不使用回调的网站会停止页面上所有其他JavaScript的执行,如果你不把它放在后台的话;这就是回调和承诺为您所做的(至少从外部)。

承诺?

执行异步工作的函数通常返回一个Promise对象,该对象承诺在工作完成后为您提供值(通过调用then回调中传递的函数),或者在发生错误时出错(通过调用catch回调)。

异步/等待

引入异步/等待是为了使使用承诺更好、更易读,从而大大减少了回调的需要。您可以在这篇MDN文章中阅读更多有关这方面的内容。

上面的代码块只包含为使事情正常工作而进行的最低限度的更改。让我们再简化一点吧!

代码语言:javascript
复制
async function myBlobToUIntDemo() {
  let str = 'content';
  let str2blob = (str, type = 'text/plain') => new Blob([str], { type: type });
  let blob = str2blob(str);

  const buffer = await new Response(blob).arrayBuffer();
  const uint = [...new Uint8Array(buffer)];
  
  console.log(uint);
}

请注意,这也会返回一个承诺(如果您将函数标记为异步,这将自动发生),因此,如果要在代码中的任何地方使用该函数,请确保记住这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69014731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档