JSFiddle - React, Tailwind, and code Playground
JavaScript
/**
* Получение базовой информации с сервера.
*
* @param {object} [o] Объект с аргументами AJAX:
* {
* @param {string} [type='POST'] POST/GET.
* @param {string} [url=''] Адрес для запроса.
* @param {object} [data={}] Данные, отправляемые на сервер.
* }
* @param {int} [t] Количество повторных попыток.
* @param {function} [c(jsonapi)] Анонимная функция при успехе.
*/
MyClass.prototype.getBaseContents = function(o, t = 5, c = function(jsonapi){}) {
$.ajax({
type: o.type || 'GET',
dataType: "json",
url: o.url || '',
data: o.data || {},
context: MyClass.prototype,
success: function(jsonapi) {
switch (jsonapi.data.meta) {
case 'imeta':
this[jsonapi.data.meta] = jsonapi.data.values;
break;
}
c(jsonapi);
},
error: function(XMLHttpRequest) {
if (t-- > 0
&& XMLHttpRequest.status != 404
// еще статусы
) {
// повтор через 2 секунды...
setTimeout(function(){
MyClass.prototype.getBaseContents(o, t, c);
}, 2000);
} else {
MyClass.prototype.myErrorHandler(
XMLHttpRequest.status,
XMLHttpRequest.responseText
);
}
}
});
}