У меня проблемы с пониманием async.waterfall
при использовании цикла for:
Итак, я использую следующий водопад:
async.waterfall([
addVertices,
countVertices
], finish);
с тремя способами ниже.
Однако проблема, с которой я сталкиваюсь, заключается в том, что результат в countVertices
не точен, то есть иногда должен быть 2, а иногда 1, когда он всегда должен показывать 2.
Это наводит меня на мысль, что обратный вызов из addVertices
фактически не вызывается после завершения цикла for.
Может ли кто-нибудь помочь - это неправильно при вызове обратного вызова, когда цикл for достигает последней итерации?
function addVertices(callback) {
for (var x = 0; x < pData.length; x++) {
client.execute("g.addV(‘test’).property(‘id’, \"" + pData.id + "\")", { }, (err, results) => {
if (err) {
return callback(console.error(err));
}
});
if (x == pData.length-1 ){
callback(null)
}
}
}
function countVertices(callback)
{
console.log('Running Count');
client.execute("g.V().count()", { }, (err, results) => {
if (err) {
return callback(console.error(err));
}
console.log("Result: %s\n", JSON.stringify(results));
callback(null)
});
}
function finish(err, result)
{
if (err) {
return console.error(err);
}
console.log("Finished");
console.log('Press any key to exit');
process.stdin.setRawMode(true);
process.stdin.resume();
process.stdin.on('data', process.exit.bind(process, 0));
}