$('button:contains("Скачать выбранные")').on('click', function() {
var zip = new JSZip();
var selector = $(this).data('target');
var inputs = $(selector).find('input:checkbox:checked');
if (inputs.length > 0) {
var deferreds = inputs.map(function(n, element) {
return $.Deferred(function(deferred) {
var fileID = $(element).attr('id').replace('download-docs-', '');
$.ajax({
url: filesObj.params[fileID]['SRC'],
type: 'GET',
xhrFields: { responseType: 'blob' },
dataType: 'binary',
success: function(blob) {
blob.name = filesObj.params[fileID]['NAME'];
zip.file(filesObj.params[fileID]['NAME'], blob);
deferred.resolve(blob);
},
error: function(jqxhr, status) {
deferred.reject(jqxhr);
}
});
});
});
$.when.apply(this, deferreds).done(function(blobs) {
zip.generateAsync({ type: 'blob' }).then(function(blob) {
saveAs(blob, 'files.zip');
}, function(err) {
console.log('Не удалось создать архив:', err);
});
}).fail(function(jqxhr) {
console.log('При скачивании файлов произошла ошибка, один из файлов не скачался:', jqxhr);
});
}
});
.catch(...)
это все равно что .then(null, ...)
а у метода .then
есть особенность: если колбек-функция для запуска отсутствует, то созданный этим методом промис возвращает результат промиса на котором вызван.var response = await $.post(“super-adres.php”, { parametr: znachenie });
console.log(response);
$(function() {
$( "#send" ).submit(async function(e) {
console.log("send")
e.preventDefault();
while (true) {
var response = await $.ajax({
type: $(this).attr('method'),
url: "send.php",
data: new FormData(this),
contentType: false,
cache: false,
processData: false
});
conole.log('Ответ сервера:', response);
// Делаем задержку перед повторением цикла в 1000 миллисекунд:
await $.Deferred(function(d) { setTimeout(d.resolve, 1000); });
}
});
});
// Ожидание элемента:
function waitElements(selector, regexp, where) {
return new Promise(function(returnResult) {
var search_result = false;
var local_reactive_function = function() {
var wait_elements = searchElements(selector, regexp, where);
if (wait_elements.length > 0) {
if (search_result === false) {
search_result = true;
observer.disconnect();
returnResult(wait_elements);
}
}
}
var observer = new MutationObserver(local_reactive_function);
observer.observe(document.body, {
characterData: true,
attributes: true,
childList: true,
subtree: true
});
local_reactive_function();
});
}
// Поиск элемента:
function searchElements(selector, regexp, where) {
var search_elements = [];
if (typeof where !== 'undefined') {
var all_elements = where.querySelectorAll(selector);
}
else {
var all_elements = document.querySelectorAll(selector);
}
for (var n = 0; n < all_elements.length; n++) {
if (typeof regexp == 'object') {
if (typeof regexp.test == 'function') {
if (regexp.test(all_elements[n].innerText.trim())) {
search_elements.push(all_elements[n]);
}
}
}
else {
search_elements.push(all_elements[n]);
}
}
return search_elements;
}
var els = await waitElements('input#id');
console.log('Элементы найдены:', els);
btn.addEventListener('click', async (e) => {
field = e.currentTarget.parentNode.querySelector('[data-inline-search-field]');
field.classList.add('active');
(await waitElements('input', null, field))[0].focus();
closeBtn = field.querySelector('[data-inline-search-close]');
});
function getTextNodes() {
var n, a=[], walk=document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false);
while (n=walk.nextNode()) a.push(n);
return a;
}
await $.getScript('https://learn.javascript.ru/article/promise-chaining/one.js');
await $.getScript('https://learn.javascript.ru/article/promise-chaining/two.js');
await $.getScript('https://learn.javascript.ru/article/promise-chaining/three.js');
$.getScript
можешь loadScript
использовать, результат будет такой же - последовательная загрузка. <button onclick="fetch('https://test.ru/?id=5&rating=5')" type="button" id="button">Голосовать</button>