(function(cb) {
for (let x = 0; x < vinsToAnalyze.length; x++) {
if (vinsToAnalyze[x].length > 10) {
setErrorVinsArr([...errorVinsArr, vinsToAnalyze[x]]);
} else {
setValidatedVins([...validatedVins, vinsToAnalyze[x]]);
}
## return callback when everything is done.
## Follow the pattern of shouting only after barking is done below
## if `setErrorVinsArr` is supposed to take more time also.
return cb();
})(findMissing)
function findMissing () {
if (missingVinsArr.length <= validatedVins.length) {
console.log('valid');
} else {
console.log('invalid');
}
}
Таким образом вы можете синхронно выполнять код. Например,
function shout() {
console.log('SHOUT')
}
Вы хотите запустить shout, но только после того, как некоторая функция fini sh лает первой. Таким образом, вы должны передать shout
лай как ссылку, это будет вызываться как обратный вызов, когда лай закончится.
(function(cb) {
console.log('barking');
setTimeout(function(){
console.log('barking finished');
cb()
}, 2000);
console.log('still barking would finish after 2000');
})(shout)
Вы можете запустить этот пример в консоли, чтобы лучше понять, как это работает.