Методы SetTimeOut() и setInterval() всегда выделают дополнительный поток и работают независимо. Есть ли способ сделать нормальную Задержку без выделения потока?JS однопоточный, колбэки setTimeout и setInterval выполняются на том же потоке. Именно поэтому кстати, их задержка не фиксированная.
async function requestKeyParsingToken() {
try {
({public_key: keyParsingTokenEndpoint} = data);
const {data} = await request({
method: "get",
url: TOKEN_SETTINGS,
})(data);
} catch (error) {
console.log(error)
}
}
А ошибка возникает из-за использования переменной до ее объявления, что запрещено с переменными объявленными через let и const, это называется "мертвое всплытие".class Name1 {
method1() {
console.log(1);
}
}
class Name2 {
constructor(name1) {
this.name1 = name1;
}
method2() {
this.name1.method1();
}
}
const name2 = new Name2(new Name1());
name2.method2()
n % 10
const lastDigit = n => {
// в n совсем не то
if (isNaN(n) || !isFinite(n)) return NaN;
// в n целое
if (n % 1 === 0) return n % 10;
// для дробных проще со строкой работать
const s = String(Math.abs(n));
// неточные значения
if (s.length > 16 || s.includes('e')) return NaN;
return +s.slice(-1);
}
const f = i => {
console.log(i);
};
for (let i = 0; i < 5; i++) {
setTimeout(f, 1000, i);
}
mutation observer ловит изменения, делает проверку и заполняет массив потоми делает запрос. Но тут почему то ajax не ждёт пока заполнится массив и сразу выполняет запрос.К тому же эту проблему синхронный запрос не решит, он ее наоборот усугубит, так как MutationObserver так же не сможет отработать пока не завершится запрос.
Существуют ли случаи, когда оправдано использование синхронных запросовединственное оправданное применение - отправка данных перед закрытием вкладки на динозаврах без поддержки sendBeacon
логика хромает и лучше всего все переписатьк сожалению появление асинхронности в одном месте может привести к появлению асинхронности во многих других местах, по другому ни как. Так что да, придется переписать. Но это неизбежно, так как многие api в современно браузере (тот же MutationObserver) работают только асинхронно. К счастью есть промисы и async/await сахар над ними, что сильно упрощает такую задачу.
const OBJECT = {
fields: {
NAME: 'LOREM',
SECOND_NAME: 'IPSUM',
LAST_NAME: 'DOLOR',
}
};
const url = new URL('https://somesite.com/crm.contact.add.json');
for (const [name, value] of Object.entries(OBJECT.fields)) {
url.searchParams.append(`fields[${name}]`, value);
}
console.log(url.href);