CCCPaste

async function asyncFn() {
console.log('asyncFn start'); // 2
await Promise.resolve(); // микро 2
console.log('asyncFn finish'); // 4
}


function fn() {
console.log('hello'); // 1

setTimeout(function() {
console.log('setTimeout1'); // макро 1 // 6
}, 0);

new Promise(function(resolve) {
resolve();
}).then(function() {
console.log('then1'); // микро 1
}).then(function() {
console.log('then2'); // микро 3 // 5
});

asyncFn()

console.log('bye'); // 3
}

fn();

// ==============


setTimeout(() => console.log('setTimeout'), 0); //макро 1
function myAsync(start = 0) {
console.log(start);
return Promise.resolve(start + 1).then(myAsync);
}
myAsync(); // 0, 1, ..., n, ...

/*
== 200 OK - server
1. parse HTML
<link rel="preconnect" ...>
<style src="./style.css" />
2. DOM

3. CSSOM r

4. DOM + CSSOM = Render Tree

5. Layout - позиционирование, + layers (+ z-index(возможно в конце))

6. Painting - цвета

==если что-то поменялось
бэкграунд - painting

==script -
*empty*
async
defer



HTTP:



GET
POST
PUT
PATCH
DELETE

(OPTIONS, HEAD)



COOKIE:

path: куда прикреплять куки /home


https://code.wb.ru

secure

httpOnly


fetch(.., {
credentials: true

})

Cookie:
*/


// ===============




const node = $('.js-node');

node.addClass('node').toggleClass('item')
.removeClass('node')
.css({
color: 'red',
paddingTop: '10px'
})
.html('<li>hello</li>');

// элементов несколько
// аффектятся все

class Nodes {
constructor(elements) {
this.elements = elements;
}

addClass(className) {
this.elements.forEach(element => {
element.classList.add(className);
});
return this;
}

removeClass(className) {
this.elements.forEach(element => {
element.classList.remove(className);
});
return this;
}

css(style) {
Object.entires(style).forEach(entries => {
const [styleName, styleValue] = entries;
this.elements.forEach(element => {
element.style[styleName] = styleValue;
});
})

return this;
}

html(text) {
this.elements.forEach(element => {
element.innerHTML = text;
});

return this;
}
}

function $(selector) {
const elements = document.querySelectorAll(selector);
return new Nodes(elements);
}