⊗jsSpACInr 155 of 294 menu

JavaScript-də kallbeklərlə asinxron kod

Tutaq ki, bizim müəyyən asinxron funksiyamız var:

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

Tutaq ki, biz bu funksiyadan aşağıdakı kimi istifadə edirik:

make(); console.log('2'); // birinci icra olunacaq

Tutaq ki, biz elə etmək istəyirik ki, ikinci konsol çıxarışı, funksiyanın daxilindəki asinxron əməliyyat yerinə yetirildikdən sonra icra olunsun. Bunun üçün istifadə olunan yanaşmalardan biri kallbek istifadəsidir: gözlənilən kodu anonim funksiyaya çevirək və parametr kimi make funksiyasına ötürək:

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

Əlbəttə ki, bu, öz-özünə bizim məsələmizi həll etməyəcək. Biz sadəcə aşağıdakı razılaşmanı bağladıq: make işə düşdükdən sonra kodu icra etmək istəyirsinizsə, bu kodu make çağırışına kallbek kimi ötürün.

make funksiyasının kodunu, bizim razılaşmamıza uyğun işləməyə başlaması üçün düzəldək:

function make(callback) { setTimeout(function() { console.log('1'); // müəyyən asinxron əməliyyat, bir neçə ola bilər callback(); // sonra bizim kallbekimiz }, 3000); }

Konsola nömrələrin hansı ardıcıllıqla çıxarılacağını izah edin:

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