У меня есть метод, который принимает функцию в качестве параметра обратного вызова. Как внешний метод, так и функция обратного вызова возвращают обещания, которые я собираю для массива, ожидая их разрешения с помощью Q.all.Обещание, возвращенное из метода, не определено
function eval() {
var colReadPromisses = [];
config.mongodb.colls.forEach(function (collName) {
var outer = mongo.readCollection(collName,
function (jsonData) {
var prom = es.pushItemToES(jsonData, esIndexName, collName, i);
colReadPromisses.push(prom);
});
colReadPromisses.push(outer);
});
return Q.all(colReadPromisses);
}
Теперь внутренний метод обратного вызова называется много раз, и для их обработки требуется некоторое время. Пока они обрабатываются, обещания, возвращенные из метода readCollection, получают «undefined», вызывающие «Q.all (colReadPromisses)»; Разрешить.
Итак, мои два вопроса были бы связаны с тем, почему nodejs теряет следы на обещания, возвращенные методом 'readCollection', и как мне этого избежать?
Спасибо за ответы!
у вас есть два '' '' отсутствует для чтобы быть действительной функцией ... отредактируйте свой код, чтобы мы могли видеть, что вы на самом деле делаете, хотя, даже если я догадываюсь, куда их поместить, код неправильный –
edit done, sorry – greengold
вы говорите 'внутренний обратный вызов метод называется много раз' - это может быть время PER readCollection? –