реагировать родной fs ios время ожидания загрузки - PullRequest
0 голосов
/ 12 сентября 2018

Я использую реактивную нативную файловую систему для загрузки контента из CMS в реактивное приложение. Идея состоит в том, чтобы использовать приложение для обслуживания онлайн-контента / веб-сайта для автономного использования. Приложение работает на 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%.

Мой вопрос: связана ли проблема с тайм-аутом или возможна ли обратная связь? Кто-нибудь еще сталкивался с такой проблемой с реакцией native fs или кто-то знает, как решить эту проблему. Боюсь, я даже не могу точно определить проблему. Любая помощь очень ценится!

1 Ответ

0 голосов
/ 24 января 2019

Вы пытались добавить background: true к RNFS.downloadFile({background: true}) опциям?

...