Можете, пожалуйста, объяснить, что выполняет эта часть кода: (Membership || (Membership = {})Если в Membership не falsy значение (например объект), то передать ссылку на него в функцию, иначе (если в Membership undefined) присвоить в Membership новый объект и передать ссылку на него в функцию
И почему это всё обёрнуто в функцию?Сложно сказать, думаю кто-то скопировал код отсюда в код сюда и не стал париться, так как в обоих случаях есть declaration merging, о котором уже написал Aetae
но зачем скомпилированную версию называть отдельным именем и выделять под нее отдельный репозиторийdist репозиторий может автоматически разворачиваться на CDN через CI или push-хук, при этом в нем нет исходников и на него может быть ограниченный доступ на запись, а в репо с исходниками нет артефактов сборки. Кроме того можно быстро откатить кривой релиз через revert.
Что-то я не пойму в чем разница между pdf.js и pdfjs-dist?В одном лежат исходники, в другом собранные бандлы.
const preloadImages = document.querySelectorAll('.pr-bub');
const preloadImagesAnimationInterval = setInterval((state) => {
const item = preloadImages[state.index];
item.classList.toggle('animationPreBub', state.addClass);
state.index--;
if (state.index < 0) {
state.addClass = !state.addClass;
state.index = preloadImages.length - 1;
}
}, 300, {
addClass: true,
index: preloadImages.length - 1,
});
new Promise(resolve => {
// здесь код выполняется синхронно
resolve();
}).then(() => {
// здесь уже асинхронно, в ближайшем микротаске после вызова resolve выше
});
Promise.resolve().then(() => {
// здесь тоже асинхронно, в ближайшем микротаске
});
много вычисленийЭто не про асинхронность.
Accept
.fetch()
не ждет завершения всего запроса, он резолвится когда получены все заголовки.response.text()
и response.json()
нужен чтоб дождаться считывания всего тела ответа, притом response.json()
еще и позволяет браузеру парсить json из ответа потоково прямо во время скачивания, опять же не блокируя поток js/ui. Promise.all(arr.map(p => {
const link = `http://195.112.117.82:5080/photo?tov_code_internet=${encodeURIComponent(p)}`;
return new Promise(resolve => {
$.get(link, resolve);
});
})).then(dataArr => {
for (const data of dataArr) {
const $obj = $(data);
const content = $obj[19].innerHTML;
const title = $obj[7].innerText;
// по хорошему регулярки надо вынести наверх,
// чтобы они компилировались 1 раз
const text = content
.replace(/[\n\r]/g, ' ')
.replace (/\s{2,}/g, ' ');
console.log(text + " " + title);
}
}).catch(err => {
console.error(err);
});
произведение элементов массива
let p = 1;
// в цикле:
p *= arr[i];
кратных 3
n % 3 === 0
оканчивающихся на 5
n % 10 === 5
если таких элементов нетв общем случае делается введением флага:
let hasElements = false;
if (/* ... */) {
hasElements = true;
}
Но конкретно в этом случае, так как 1 гарантированно не попадает под условия, а все остальные числа изменят произведение, можно проще p !== 1