响应本机fs ios下载超时

时间:2018-09-12 07:56:19

标签: react-native react-native-fs ios11.4

我正在使用react-native fs将内容从CMS下载到react-native应用程序中。想法是使用该应用程序来提供在线内容/网站以供离线使用。 该应用程序在Android上运行良好,不会引发任何错误,但在iPad(ios 11.4)上,下载从未完成。 这是我正在使用该功能的App.js的一部分,这会在iPad上引发错误:

import React, {Component} from 'react'
import {
Platform,
StyleSheet,
Text,
View,
WebView,
Button,
Alert,
NetInfo,
StatusBar,
Modal,
TouchableOpacity,
Image
} from 'react-native'

import RNFS from 'react-native-fs'

export default class App extends Component {
    const path = RNFS.DocumentDirectoryPath + '/assets/' + saveAs
    let pp = path.split('/')
    pp.pop()

    return RNFS.mkdir(pp.join('/'), {NSURLIsExcludedFromBackupKey: true}).then(() => {
        const download = RNFS.downloadFile({
            fromUrl: url,
            toFile: path,
            discretionary: true,
            progress: (res) => {
                const tmp = this.state.bytesWritten
                tmp[res.jobId.toString()] = res.bytesWritten
                this.setState({bytesWritten: tmp})
            },
            begin: (res) => {
                this.setState({
                    contentLength: this.state.contentLength + res.contentLength
                })
            },
            readTimout: 15000
        })
        return download.promise.then((res) => {
            return res;
        })
        .catch((error) => {
            console.warn('An error occured while downloading: ' + error);
            console.warn('Current URL: ' + url);
        });
    })
    .catch ((error) => {
        console.warn('An error occured while creating directory: ' + error);
    });
}

在另一个函数中调用downloadAndSave函数,如下所示:

let pr = []
// d are the files that need to be downloaded, around 250-300
d.forEach((elem) => {
    pr.push(this.downloadAndSave(elem.name, elem.saveAs));
})
return Promise.all(pr);

错误总是来自catch块“下载时发生错误:”。 引发的错误与受影响的URL的数量不同。

发生的错误消息是(已翻译,因此可能有些偏离):

  • 请求/处理无法完成
  • 请求超时
  • POSIX错误-9805-未知错误:-9805

下载大约50-70%的文件后出现错误,然后从未完成,但停止在80-90%左右。

我的问题是问题是否与超时有关或可能与许多回调有关? 是否有人在响应本机fs时遇到过此类问题,或者有人对如何解决此问题有所了解。 恐怕我什至无法真正找出问题所在。 任何帮助深表感谢!

1 个答案:

答案 0 :(得分:0)

您是否尝试过将background: true添加到RNFS.downloadFile({background: true})的选项中?