如何检查JSON条目中是否存在所有文件,然后执行命令?

时间:2018-08-17 02:41:24

标签: angular typescript ionic-framework

我正在用Ionic开发视频播放器,该视频播放器可以在PHP后端下载并同步。而且我需要检查一个JSON文件(通过API),检查是否所有文件都已下载,然后删除Ionic加载程序。

但是我目前在Typescript的异步部分上遇到问题。我不是打字稿专家,这是我的第一个打字稿项目。我曾尝试使用计时器作为“快速修复”工具,但我需要一个真正的解决方案,因为有时计时器无法正常工作

我尝试通过每隔几秒钟读取并运行带有角度订阅的JSON来解决此问题,然后运行checkFile(Ionic Native插件)。我有一个设置为false的标志(如果此标志设置为false,则加载程序将继续运行)。我检查条目JSON条目的文件是否存在,并将标记标记为true。 如果文件不存在,则将标记标记为false(或将标记保留为false),然后使用计时器(setTimeout),检查标记是否为TRUE,是否为TRUE,然后删除Ionic Loader。 对于我们所有的测试需求,我的代码都可以正常工作,但是它失败了两次或3次,并且我知道是加载程序问题正在被禁用(因为该标志被设置为TRUE而不完成是否检查所有文件的存在)。 / p>

这是我的代码

            let loaderFlag:boolean = false;
            setInterval(()=> {
            this.http.get(this.apiFile).subscribe((datajsonFile) => {
                for(let eachDataCount in datajsonFile) {
                    this.file.checkFile(this.file.dataDirectory, datajsonFile[eachDataCount].filename_orig).then((result) => {
                        console.log("[Loader] File exists: " + datajsonFile[eachDataCount].filename_orig);
                        loaderFlag = false;
                    }, (error) => {
                        console.log("[Loader] File doesn't exists: " + datajsonFile[eachDataCount].filename_orig);
                        console.log("[Loader] Keep Showing Loader");
                        loaderFlag = true;
                    });
                }
            }, (error) => { console.log("[Loader] Can't read JSON"); } );

            setTimeout(()=> {
                if(loaderFlag==false) {
                    loader.dismiss();
                }
            }, 1000*5);
        }, 1000*5);

我知道我需要一种更好的方法来不使用标志。

我尝试做一个异步功能,但实际上不知道如何解决我的问题。 有没有一种方法可以先检查所有文件的存在,然后再删除加载程序?

我需要检查JSON条目,并确认所有JSON条目“文件名”确实以文件形式存在于设备上。

就像我说的那样,这是我关于TypeScript和Ionic的第一个项目,所以我真的不知道如何解决它。

非常感谢您。

0 个答案:

没有答案