Код без какой-либо обработки:
for (i=0; i<dbImgCount; i++){
(function(i) {
imgDownload(FolderPath[i].FolderPath, function (next){
var url = FolderPath[i].FolderPath;
const img2 = cv.imread(imgDownload.Filename);
match({url,
img1,
img2,
detector: new cv.ORBDetector(),
matchFunc: cv.matchBruteForceHamming,
});
})
})(i);
}
В приведенном выше коде imgDownload
- это асинхронная функция , которая будет загружать изображение, match
будет сопоставлять функции загруженного изображения сдругое изображение.После этого нужно выполнить функцию for-loop
.
Как реструктурировать этот код, используя Promise
или async-await
, чтобы каждый вызов асинхронной функции ожидался, а только после завершенияfor-loop
, поток продолжается?
Отредактировал код с помощью async-await
:
FolderPath.forEach(FolderPath => {
(async function () {
var filename = await imgDownload(FolderPath.FolderPath);
var url = FolderPath.FolderPath;
const img2 = cv.imread(filename);
imgs = await match({url,
img1,
img2,
detector: new cv.ORBDetector(),
matchFunc: cv.matchBruteForceHamming,
});
})();
});
function someFunction(){
console.log("After forEach");
}
Как выполнить someFunction
только послеforEach