⊗jsSpACInr 155 of 294 menu

Msimbo wa Asynchroni na Vitendo vya Kurudia (Callbacks) katika JavaScript

Tuchukulie tuna baadhi ya kaziya asynchroni:

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

Tuchukulie tunatumia kaziya hii kama ifuatavyo:

make(); console.log('2'); // itatekelezwa kwanza

Tuchukulie tunataka kufanya hivi, ili matokeo ya pili katika koni yatekelezwe baada ya operesheni ya asynchroni ndani ya kaziya kutekelezwa. Mojawapo ya mbinu zinazotumika kwa hili, ni matumizi ya kitendo cha kurudia (callback): tutafunge msimbo unaosubiri kwa kaziya isiyo na jina na kuupitisha kama kigezo kwenye kaziya make:

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

Bila shaka, hii yenyewe haitatatua shida yetu. Kwa sasa tumekubaliana tu: ukitaka kutekeleza msimbo baada ya make kukamilika pitisha huo msimbo kama kitendo cha kurudia (callback) kwenye wito wa make.

Turekebishe msimbo wa kaziya make ili ianze kufanya kazi kulingana na makubaliano yetu:

function make(callback) { setTimeout(function() { console.log('1'); // operesheni fulani ya asynchroni, labda si moja tu callback(); // kisha kitendo chetu cha kurudia }, 3000); }

Eleza, kwa utaratibu gani nambari zitaonyeshwa kwenye koni:

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