javascript - 支持 StreamSaver.js 的 AngularJS

标签 javascript angularjs

我想添加以下 StreamSaver.js代码到 AngularJS。不接受相同的语法,因此我更改了代码以适应 Angular 。

我收到以下 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);
  });
};

关于javascript - 支持 StreamSaver.js 的 AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38964021/

相关文章:

javascript - jade 使用 javascript 变量(mongo 模型)

javascript - 基于下拉的onclick按钮href

javascript - 默认选择 angularjs 中的所有复选框

javascript - AngularJS 中的克隆元素

javascript - transclude() 和 ng-repeat 玩得不好

javascript module 如何获取当前对象( this 引用其他东西)?

javascript - 这个可疑且可能是恶意代码的作用是什么?

javascript - 使用 window.location 和 window.history

javascript - 如何取消选择所有 radio 输入?

javascript - 使用 ng-hide/ng-show 和函数显示更多,显示更少