itinance/react-native-fs

Cancel all downloads

開放

#297 建立於 2017年5月22日

 (1 則留言) (0 個反應) (0 位負責人)C++ (1,012 個分叉)batch import
help wantedquestion

倉庫指標

星標
 (5,043 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

Hi everyone,

first of all, thank you all for providing and maintaining RNFS.

I am currently developing an app that allows users to download modules which consists of a lot of files (~300).

What I got so far (simplified version):

return await Promise.all(contents.map(async (file) => {
    await RNFS.downloadFile({
        fromUrl: basedir + '/' + file,
        toFile: moduleFolder + '/' + file,
        begin: (job) => {
            console.log('Begin job: ' + job.jobId);
        }
    })
    .promise.then((job) => {
        console.log('Job done: ' + job.jobId);
    })
    .catch((err) => {
        console.log(err);
    });
}))
.then(() => {
    console.log('Download complete.');
})
.catch((err) => {
    console.log(err);
});

Now, what I can't quite wrap my head around yet is how to implement a function that stops all pending downloads.

I tried cancelling each download with stopDownload(job.jobId) as soon as the download begins, but then the debugger starts throwing a lot of errors like the following:

https://cloud.githubusercontent.com/assets/17614778/21006568/b3e050c8-bd39-11e6-8ba1-c6fa51f5b1b4.png

Also, this approach somehow doesn't feel like the right way to handle the issue.

I also tried adding download promises recursively, and experimented with Bluebird and cancellable promises, but haven't succeeded yet.

Any help is greatly appreciated. Thank you!

貢獻者指南