Реагирует на зависание собственного приложения при синхронизации 10 вызовов API - PullRequest
0 голосов
/ 27 марта 2020

Я работал над приложением React Native с управлением состоянием Redux. В этом приложении синхронизация происходит каждую 1 минуту. Я нажимаю 10 вызовов API каждый раз. Недавно я заметил, что приложение зависает в приложении Android на следующих условиях. 1. При подключении к мобильным данным. 2. При исходе из фона. 3. И когда syn c API срабатывает.

Когда эти 3 сценария ios происходят все вместе, приложение останавливается на несколько секунд.

function* syncAPICalls(action, sample = undefined) {
let sampleData = settings;
try {
    yield* makeDevicesCall({});
    yield* makeDashboardNotificationCall({});
    if (isValidElement(sampleData)) {
        sampleData = sample;
    } else {
        sampleData = yield call(sampleApiCall1);
    }

    yield* sampleFunc1({ param: param});
    yield* sampleFunc2({ param: param});
    yield* sampleFunc3({ param: param});
    yield* sampleFunc4({ param: param});
    yield* sampleFunc5({ param: param});
    yield* sampleFunc6({ param: param});
    let phoneNo;
    if (isValidElement(phone)) {
        phoneNo = phone;
    } else {
        let sampleData2 = yield call(sampleApiCall2);
        phoneNo = sampleData2.contact_no;
    }
    yield* sampleFunc7({ param: param});
    yield* sampleFunc8({ param: param});
} catch (e) {
    if (__DEV__) {
        console.log(e);
    }
}

}

Я переименовал все как образец. Каждый sampleFunction будет обновлять редуктор, используя put метод.

Когда я удалял операции Syn c, приложение работает более плавно, а когда передний план также синхронизируется c.

Только при поступлении из фона мобильные данные синхронизируются c.

Я могу вас заверить, что syn c вызывает только один раз. И все API получают успешный ответ.

Verison

react-native-cli: 2.0.1
react-native: 0.59.9

Я что-то не так делаю ?. Пожалуйста, дайте мне несколько идей о том, что пошло не так, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...