closure js 框架 - 将 ArrayBuffer 转换为字符串
closure js framework - converting ArrayBuffer to string
我正在开发一个使用 closure framework (https://github.com/google/shaka-player) 的 javascript 应用程序。
我收到了带有 403 响应的 ajax 响应,我需要解析响应正文以确定详细信息。
xhr_.responseType 设置为 arraybuffer - 所以我希望能够将响应转换为字符串以读取其内容:
if (this.xhr_.responseType == 'arraybuffer')
{
var ab = new Uint8Array(this.xhr_.response);
console.log(this.xhr_.response);
console.log(ab);
}
使用闭包框架构建,出现以下错误:
./build/../build/../lib/util/ajax_request.js:441: ERROR - actual parameter 1 of Uint8Array does not match formal parameter
found : *
required: (Array.<number>|ArrayBuffer|ArrayBufferView|null|number)
var ab = new Uint8Array(this.xhr_.response);
所以我发现无法将响应传递给 Uint8Array 构造函数。有没有办法投响应以保持闭包安静?
如果responsetype是arraybuffer,那么你需要这样循环:
if (this.xhr_.responseType == 'arraybuffer')
{
var ab = new Uint8Array(this.xhr_.response);
for (var i = 0, buffer = ''; i < ab.length; i++)
{
buffer += String.fromCharCode(payload[i]);
}
}
希望对您有所帮助。
我找到了一个可行的解决方案 - 如何在 Closure 框架中进行转换 - 我希望这对某人有所帮助
if (this.xhr_.responseType == 'arraybuffer')
{
var response = /** @type {ArrayBuffer} */ (this.xhr_.response);
var sBuffer = String.fromCharCode.apply(null, new Uint8Array(response));
console.log('response ArrayBuffer to string: ' + sBuffer);
}
我正在开发一个使用 closure framework (https://github.com/google/shaka-player) 的 javascript 应用程序。
我收到了带有 403 响应的 ajax 响应,我需要解析响应正文以确定详细信息。
xhr_.responseType 设置为 arraybuffer - 所以我希望能够将响应转换为字符串以读取其内容:
if (this.xhr_.responseType == 'arraybuffer')
{
var ab = new Uint8Array(this.xhr_.response);
console.log(this.xhr_.response);
console.log(ab);
}
使用闭包框架构建,出现以下错误:
./build/../build/../lib/util/ajax_request.js:441: ERROR - actual parameter 1 of Uint8Array does not match formal parameter
found : *
required: (Array.<number>|ArrayBuffer|ArrayBufferView|null|number)
var ab = new Uint8Array(this.xhr_.response);
所以我发现无法将响应传递给 Uint8Array 构造函数。有没有办法投响应以保持闭包安静?
如果responsetype是arraybuffer,那么你需要这样循环:
if (this.xhr_.responseType == 'arraybuffer')
{
var ab = new Uint8Array(this.xhr_.response);
for (var i = 0, buffer = ''; i < ab.length; i++)
{
buffer += String.fromCharCode(payload[i]);
}
}
希望对您有所帮助。
我找到了一个可行的解决方案 - 如何在 Closure 框架中进行转换 - 我希望这对某人有所帮助
if (this.xhr_.responseType == 'arraybuffer')
{
var response = /** @type {ArrayBuffer} */ (this.xhr_.response);
var sBuffer = String.fromCharCode.apply(null, new Uint8Array(response));
console.log('response ArrayBuffer to string: ' + sBuffer);
}