函数需要在顺序Javascript中运行代码



你好,我这里有一个函数。在函数内部,我运行一个循环。循环运行后,我有一个IF语句。我们都知道,这里的问题是javascript是异步的。有可能实现非异步吗?其中循环结束,然后进入IF语句。以下是我的功能:

async function analyzeVins() {
const vinsToAnalyze = vins.split('n');
if (vinsToAnalyze.length === 0) {
return;
}
for (let x = 0; x < vinsToAnalyze.length; x++) {
if (vinsToAnalyze[x].length > 10) {
setErrorVinsArr([...errorVinsArr, vinsToAnalyze[x]]);
} else {
setValidatedVins([...validatedVins, vinsToAnalyze[x]]);
}
}
if (missingVinsArr.length <= validatedVins.length) {
console.log('valid');
} else {
console.log('invalid');
}
}
(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传递给吠叫作为引用,当吠叫结束时,它将被调用为回调。

(function(cb) { 
console.log('barking');
setTimeout(function(){ 
console.log('barking finished');
cb() 
}, 2000);
console.log('still barking would finish after 2000');
})(shout)

您可以在控制台中运行此示例,以更好地了解它的工作原理。

相关内容

最新更新