⊗jsSpACInr 155 of 294 menu

Асінхронны код з калбэкамі ў JavaScript

Няхай у нас ёсць нейкая асінхронная функцыя:

function make() { setTimeout(function() { console.log('1'); }, 3000); }

Няхай мы выкарыстоўваем гэтую функцыю наступным чынам:

make(); console.log('2'); // выканаецца першым

Няхай мы хочам зрабіць так, каб другі вывад у кансоль выканаўся пасля таго, як выканаецца асінхронная аперацыя ўнутры функцыі. Адным з падыходаў, якія выкарыстоўваюцца для гэтага, з'яўляецца выкарыстанне калбэка: абернем чакаючы код у ананімную функцыю і перададзім параметрам у функцыю make:

make(function() { console.log('2'); });

Вядома ж, само па сабе гэта не вырашыць нашу задачу. Пакуль мы проста заключылі наступную ўмову: пры жаданні выканаць код пасля спрацоўвання make перадайце гэты код калбэкам у выклік make.

Выправім код функцыі make так, каб яна пачала працаваць у адпаведнасці з нашай умовай:

function make(callback) { setTimeout(function() { console.log('1'); // нейкая асінхронная аперацыя, можа не адна callback(); // затым наш калбэк }, 3000); }

Раскажыце, у якім парадку выведуцца лікі ў кансоль:

function make(callback) { setTimeout(function() { console.log('1'); callback(); }, 3000); } make(function() { console.log('2'); console.log('3'); });
idderoitby