Geo*_*ian 6 asynchronous node.js async-await
我正在尝试开发一个 NodeJS 应用程序,但它不会按预期执行。我想先执行 downloadIMG,然后执行 featureMatching 并继续执行,直到 for 循环终止。指导我以正确的方式重写代码。
for (var i=0; i<dbImgCount; i++) {
(function(i) {
async.waterfall([
async function downloadIMG(done) {
try {
var options = {
url: FolderPath[i].FolderPath,
dest: '/home/ubuntu/imgCompare/'
}
const { filename, image } = await download.image(options);
image2 = 'image.jpg';
done(null, 'hi');
} catch (e) {
console.error(e)
}
},
async function featureMatching(a, done){
const img1 = cv.imread(image1);
const img = 'image.jpg';
const img2 = cv.imread(img);
const orbMatchesImg = matchFeatures({
img1,
img2,
detector: new cv.ORBDetector(),
matchFunc: cv.matchBruteForceHamming
},
(console.log(image1+','+img))
);
done(null);
}
],
function (err) {});
})(i);
}
Run Code Online (Sandbox Code Playgroud)
从这里得到了答案。通过从异步函数返回 args 作为数组,可以在异步瀑布中使用异步函数。
像这样
async.waterfall([
// ...
async function (arg1, arg2) {
//...
const arg3 = await foo()
return [arg1, arg2, arg3] //USE THIS, OTHERWISE 2ND fn WON'T WORK
},
function ([arg1, arg2, arg3], callback) {
//...
}
],function (err) {});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6651 次 |
| 最近记录: |