【发布时间】:2021-10-31 00:18:56
【问题描述】:
是否可以在不使用回调且仅使用 JavaScript 的情况下将 Blob 转换为 Uint8Array?
如何返回调用变量uint8data的uint8array?
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
【问题讨论】:
-
你是否对异步有问题(需要同步访问),或者你只是不喜欢回调函数(在这种情况下
async/await将是一个解决方案) ? -
准确来说,如何让uint8data变量等待blob2uint函数的返回?
-
使用
async/await来做到这一点。整个使用uint8data的函数都会变成异步的,没有办法避免。 -
我认为我没有正确表达自己。我会再试一次。我需要的是 blob2uint 函数以与 str 变量从 srt2blob 函数接收数据相同的方式将数据返回到 uint8data 变量,而不使用回调函数。你能给我举个例子吗?创建 blob 变量只是为了说明我的示例。
-
async/await不使用任何回调函数。但是不,你不能立即从函数中返回数据,你能做的最好的就是为它返回一个承诺。它是异步的,处理它 - 或者不要使用 blob。另见stackoverflow.com/q/17068610/1048572
标签: javascript blob arraybuffer uint8array