React Native - приложение вылетает после запуска и применения setInterval - PullRequest
0 голосов
/ 17 февраля 2019

Я здесь, чтобы задать вопрос, который не мог решить в течение дня.

После применения setInterval мое приложение вылетает на физическом телефоне Android и в моем эмуляторе показываетошибка, с которой я не знаком.

В физическом телефоне и эмуляторе Android после входа в приложение и STAY в течение минуты на определенной странице / экране происходит сбой или показошибка.

Вот мой код

export default class tables extends Component {
    constructor(props){
        super(props)
        this.state = {
            data: [],
            ....
        }
    }
    fetchData = async () => {
        const response = await fetch('http://192.168.254.***:****/table');
        const json = await response.json();
        this.setState({ data: json });
    }

    componentDidMount = () => {
        this.Set_int = setInterval(() => {
            this.fetchData().then(() => {
                this.setState({ isLoading: false })
            });
        }, 5000);
    }

    componentWillUnmount = () => {
        clearInterval(this.Set_int);
    }

    render() {
        return (
            <View>
                 ....
                 .......
            </View>
        )
    }
}

Вот ошибка:

enter image description here

Мой console.log:

enter image description here

1 Ответ

0 голосов
/ 17 февраля 2019

2693896 в журнале сервера, вероятно, относится к длине ответа, а ответ JSON 2.6 Мб, который анализируется для объекта, может занимать много оперативной памяти.Данные запрашиваются каждые 5 секунд, независимо от того, был ли выполнен предыдущий запрос.Если клиент или сервер не могут обрабатывать данные с такой скоростью, запросы и обновления состояния будут накапливаться и занимать всю доступную оперативную память.

setInterval обычно не следует использовать с обещаниями, поскольку он игнорирует цепочку обещаний.

Чтобы улучшить эту ситуацию, новый интервал должен планироваться либо только после завершения обновления состояния, либо в случае сохранения интервалов 5 с запросы могут быть отменены с помощью отменяемой выборки .

...