我想将以下StreamSaver.js代码添加到AngularJS。不能接受相同的语法,因此我将代码更改为套件角度。
我收到以下WritableStream is not defined
错误。
angular-1.5.7.min.js:117 ReferenceError: WritableStream is not defined
at Object.createWriteStream (StreamSaver.js:92)
at m.$scope.downloadFile (profile_ctrl.js:305)
StreamSaver Example code运行正常。
fetch(url).then(res => {
let reader = res.body.getReader()
let pump = () => {
return reader.read().then(({ value, done }) => {
if (done) {
myFile.close()
return
}
myFile.write(value)
return pump()
})
}
pump()
})
而下面没有给出修改后的代码。
var myFile = streamSaver.createWriteStream("filename.txt");
fetch(url).then(function(res) {
$scope.pump = function(reader) {
return reader.read().then(function(value, done) {
if (done) {
myFile.close();
return;
}
myFile.write(value);
return pump();
});
};
var reader = res.body.getReader();
$scope.pump(reader);
});
最佳答案
该错误是由于ES6语法引起的。以下代码适用于Chrome v52浏览器中的ES5。
var myFile = streamSaver.createWriteStream("filename.txt");
fetch(url).then(function(res) {
var reader = res.body.getReader();
$scope.pump(reader);
});
$scope.pump = function(reader) {
return reader.read().then(function(result) {
if (result.done) {
myFile.close();
return;
}
myFile.write(result.value);
return $scope.pump(reader);
});
};