Cordova iOS AJAX GET запрос игнорирует тайм-аут, заканчивается через 10 секунд - PullRequest
0 голосов
/ 20 декабря 2018

Используя Cordova 8.0.0, iOS 12.1.2, пытаясь отправить запрос GET на мой сервер.

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

Это происходит только для меня в iOS, сборка приложения для Android не показывает такое поведение и учитывает время ожидания, которое я установил ниже.

Пример фрагмента:

$.ajax({
            type: "GET",
            url: actionUrl,
            data: data,
            cache: false,
            dataType: "xml",
            timeout: 300000,
            async:   false,
            beforeSend: function (request) {
                request.setRequestHeader("user", settings.userId);
                request.setRequestHeader("sid", settings.sessionKey);
            },
            success: function (results) {
                callback(results);
            },
            error: function (e) {
                if (!surpressError){
                    main.ajaxError(e);
                }

                main.stopLoading();
                if (errorCallback){
                   errorCallback(e);    
                }
            }
        });

Снимок экрана времени запроса

Если я наберу async: true или просто уберу этот бит, запрос МОЖЕТ принятьболее 10 секунд, чтобы завершить, но с этим унаследованным приложением я бы предпочел не менять его больше, чем нужно, чтобы приспособить коммутатор.

Я также пытался добавить <preference name="loadUrlTimeoutValue" value="300000" /> в мой config.xml и тайм-ауты менее 1 минуты (30000), но это не помогает.

Есть ли другой способ, которым я могу гарантироватьвремя ожидания больше 10 секунд, которые я пропустил?

1 Ответ

0 голосов
/ 21 декабря 2018

Мне удалось обойти эту проблему, удалив async: false (спасибо charlietfl) и выполнив:

$.ajax({
    //as above
}).done(function(res) {
    callback(res);
});

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

Ref: Асинхронная опция метода jQuery.ajax () устарела, что теперь?

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