Asinchrone kode met terugroepe in JavaScript
Gestel ons het 'n asinchrone funksie:
function make() {
setTimeout(function() {
console.log('1');
}, 3000);
}
Gestel ons gebruik hierdie funksie op die volgende manier:
make();
console.log('2'); // sal eerste uitgevoer word
Gestel ons wil dit so maak dat die tweede
uitskrif na die konsole slegs uitgevoer word nadat die
asinchroniese operasie
binne die funksie voltooi is.
Een van die benaderings wat hiervoor gebruik word,
is die gebruik van 'n terugroep:
ons vou die wagkode in 'n anonieme funksie
en gee dit as parameter aan die funksie make:
make(function() {
console.log('2');
});
Op sigself sal dit natuurlik nie ons
probleem oplos nie. Tot nou toe het ons net hierdie
ooreenkoms getref: as u kode wil uitvoer na
die uitvoering van make, gee daardie kode
as 'n terugroep in die oproep na make.
Laat ons die kode van die funksie make regstel sodat
dit volgens ons
ooreenkoms begin werk:
function make(callback) {
setTimeout(function() {
console.log('1'); // een of ander asinchrone operasie, miskien meer as een
callback(); // dan ons terugroep
}, 3000);
}
Vertel in watter volgorde die nommers in die konsool vertoon sal word:
function make(callback) {
setTimeout(function() {
console.log('1');
callback();
}, 3000);
}
make(function() {
console.log('2');
console.log('3');
});