Асинхронный JavaScript

Содержание

Слайд 2

.className {
transition: color 10s linear;
}

function animate(color) {
element.style.color = color;
}

animate(“blue”);

setTimeout(() =>

.className { transition: color 10s linear; } function animate(color) { element.style.color =
animate(“red”), 10);

.className

.className

Слайд 3

{ JavaScript }
однопоточный
не блокирующий
асинхронный

{ JavaScript } однопоточный не блокирующий асинхронный

Слайд 4

{ Концепция жизненного цикла }

{ Концепция жизненного цикла }

Слайд 5

{ Stack }
структура, описывающая порядок выполнения кода

{ Stack } структура, описывающая порядок выполнения кода

Слайд 6

{ Heap }
это ссылка на определённую неструктурированную область памяти

{ Heap } это ссылка на определённую неструктурированную область памяти

Слайд 7

{ Event Queue }
список событий, подлежащих обработке

Каждое событие ассоциируется с некоторой функцией.

{ Event Queue } список событий, подлежащих обработке Каждое событие ассоциируется с
Когда на стеке освобождается достаточно места, событие извлекается из очереди и обрабатывается

Слайд 9

Stack

function fizz() {
throw 'Error';
}
function bazz() {
fizz();
}
function fizzbazz() {
fizz();
bazz();
}
fizzbazz();

Main

fizzbazz

fizz

bazz

fizz

Stack function fizz() { throw 'Error'; } function bazz() { fizz(); }

Слайд 10

{ Переполнение стека }

{ Переполнение стека }

Слайд 11

Stack

function bazz() {
bazz();
}
bazz();

Main

bazz

bazz

bazz

bazz

bazz

bazz

bazz

Stack function bazz() { bazz(); } bazz(); Main bazz bazz bazz bazz bazz bazz bazz

Слайд 12

{ Очередь событий }

{ Очередь событий }

Слайд 13

Main

fizzbazz

log(‘fb’)

setTimeout

callback

callback

callback

log(‘cb’)

Main fizzbazz log(‘fb’) setTimeout callback callback callback log(‘cb’)

Слайд 14

function bazz() {
setTimeout(bazz, 0);
}
bazz();

Main

bazz

setTimeout

bazz

bazz

bazz

setTimeout

bazz

bazz

bazz

function bazz() { setTimeout(bazz, 0); } bazz(); Main bazz setTimeout bazz bazz

Слайд 15

Main

setTimeout

bazz

bazz

bazz

bazz

bazz

setTimeout

bazz

Main setTimeout bazz bazz bazz bazz bazz setTimeout bazz

Слайд 17

{ Task Queue }

{ Task Queue }

Слайд 18

Task Queue

Stack

Task Queue Stack

Слайд 19

{ Microtask Queue }

{ Microtask Queue }

Слайд 20

button.addEventListener('click', () => {
Promise.resolve().then(() => console.log('Promise 1'));
console.log('Click 1');
});
button.addEventListener('click', () =>

button.addEventListener('click', () => { Promise.resolve().then(() => console.log('Promise 1')); console.log('Click 1'); }); button.addEventListener('click',
{
Promise.resolve().then(() => console.log('Promise 2'));
console.log('Click 2');
});

button.click();

Слайд 21

Microtask Queue

Stack

Microtask Queue Stack

Слайд 22

{ Render Queue }

{ Render Queue }

Слайд 23

Render Queue

RAF

Stack

Style

Layout

Painting

button.addEventListener('click', () => {
element.style.color = ‘red';
element.style.color = 'black';
element.style.color

Render Queue RAF Stack Style Layout Painting button.addEventListener('click', () => { element.style.color
= ‘red';
element.style.color = 'black';
element.style.color = ‘red';
element.style.color = 'black';
});

Слайд 24

button.addEventListener('click', () => {
element.style.color = 'red';
element.style.transition = 'color 1s linear';

button.addEventListener('click', () => { element.style.color = 'red'; element.style.transition = 'color 1s linear';
element.style.color = 'black';
});

button.addEventListener('click', () => {
element.style.color = 'red';
element.style.transition = 'color 1s linear';
requestAnimationFrame(() => {
element.style.color = 'black';
});
});

Слайд 25

button.addEventListener('click', () => {
element.style.color = 'red';
element.style.transition = 'color 1s linear';

button.addEventListener('click', () => { element.style.color = 'red'; element.style.transition = 'color 1s linear';
getComputedStyle(element).color;
element.style.color = 'black';
});

button.addEventListener('click', () => {
element.style.color = 'red';
element.style.transition = 'color 1s linear';
requestAnimationFrame(() => {
requestAnimationFrame(() => {
element.style.color = 'black';
});
});
})

Имя файла: Асинхронный-JavaScript.pptx
Количество просмотров: 51
Количество скачиваний: 0