Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 支持StreamSaver.js的AngularJS_Javascript_Angularjs - Fatal编程技术网

Javascript 支持StreamSaver.js的AngularJS

Javascript 支持StreamSaver.js的AngularJS,javascript,angularjs,Javascript,Angularjs,我想向AngularJS添加以下代码。不接受相同的语法,因此我将代码更改为suiteangular 我发现以下writeablestream未定义错误 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)

我想向AngularJS添加以下代码。不接受相同的语法,因此我将代码更改为suiteangular

我发现以下
writeablestream未定义
错误

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工作正常

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);
  });
};

您最好使用angularjs中的现有包。例如,尝试包装FileSaver.JS。

您的目标浏览器是否支持ES6语法?StreamSaver仅适用于chrome和opera,因此我的示例是使用最新语法编写的。您可能希望将其转换为ES5I。我在代码编译期间遇到此语法错误。我有一个angularjs网站想下载文件流。Chrome v52是我用来测试的浏览器。什么语法错误?您想使用torrent吗?因为您缺少interval variableHi@Infuncted,我已经删除了torrent部分并编辑了问题以反映当前的错误。WritableStream应该在chrome v52中定义,我可以问一下您使用的是什么版本吗?filesaver.js有一些限制,这对大型媒体文件不适用。此外,在chrome for android中,最大文件大小是可用的RAM量。因此,这是filesaver.js的一个主要缺点