⊗jsSpACInr 155 of 294 menu

Cod asincron cu callback-uri în JavaScript

Să presupunem că avem o anumită funcție asincronă:

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

Să presupunem că folosim această funcție în felul următor:

make(); console.log('2'); // se va executa primul

Să presupunem că vrem să facem astfel încât al doilea afișaj în consolă să se execute după ce se va finaliza operația asincronă în interiorul funcției. Una dintre abordările utilizate pentru aceasta este utilizarea unui callback: înfășurăm codul care așteaptă într-o funcție anonimă și o transmitem ca parametru funcției make:

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

Desigur, asta în sine nu ne va rezolva problema. Deocamdată am stabilit pur și simplu următoarea înțelegere: dacă doriți să executați cod după activarea make, transmiteți acel cod ca un callback la apelul make.

Să corectăm codul funcției make astfel încât ea să înceapă să funcționeze în conformitate cu înțelegerea noastră:

function make(callback) { setTimeout(function() { console.log('1'); // o operație asincronă oarecare, poate fi nu una singură callback(); // apoi callback-ul nostru }, 3000); }

Spuneți în ce ordine se vor afișa numerele în consolă:

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