Почему я получаю readystate неопределенным и статус 0, если я вызываю один и тот же остаток Api несколько раз в начале openshift? - PullRequest
0 голосов
/ 14 апреля 2019

Я получаю readystate неопределенным и статус 0 в качестве ответа, когда я вызываю один и тот же API несколько раз и вызываю его быстро один за другим. У меня есть кнопки на моей веб-странице для вызова API, и если я даю пробел в нажатии, например, 3 секунды, API работает нормально. Я проверил внутреннюю службу отдыха openAPI (swagger), которая работает нормально, даже если я быстро ее вызываю.

Поэтому я попытался провести некоторое тестирование с readystate и, что интересно, в то время как выходные данные readystate "undefined", условие if для readystate == 4 работает и выдает выходные данные как "undefined" и статус "0". Смотрите последнее, если условие.

Но главный вопрос в том, почему я получаю неопределенность, когда бэкэнд работает нормально? и API также работает нормально, если вызывается с задержкой? Добавить задержку сложно, потому что конечный пользователь может нажимать кнопки на экране, плюс я также не хочу ненужной задержки.

function getDocking(url,callBackFunction,btnId){
                var xmlhttp = new XMLHttpRequest();
                var response;
                xmlhttp.onreadystatechange = function() 
                {

                    if (this.readyState == 4 && this.status == 200) 
                    {
                        //Calling the callback function displayDocking once got response from server
                        callBackFunction(this,btnId);
                    }else if(this.readyState == 4 && this.status == 400) 
                        {
                            document.getElementById('warning').style.display = "block";
                            document.getElementById("warning").innerHTML =  this.responseText;
                        }
                        else if(this.readyState == 4)
                        {
                            alert("Received for button " + btnId + " Readystate: " + this.readystate + " Status: " + this.status)
                            callBackFunction(this,btnId);
                        }
                };

                xmlhttp.open( "POST", url , true );
                xmlhttp.send(null);
                //alert("Calling docking for Button " + btnId + " with URL " + url)
            }

1 Ответ

1 голос
/ 16 апреля 2019

Я использую openshift origin и ограничение на маршруты вызывало тайм-аут запроса.Я отредактировал файл yaml и увеличил его до 60-х годов.Значение по умолчанию составляет 30 с.

haproxy.router.openshift.io/timeout: 60s 
...