Обещания обратного вызова узла продолжения ожидают функцию, есть ли метод для удаления объявленной функции с вызовом функции

У меня проблема с библиотекой продолжения узла. При использовании обещания успеха, как показано ниже:

for (index = 0; index < models.length; index++) {
     model = models[index];
     model.drop().success(function() {
         dropTableCompleteCheck();
     });
}

JSHint жалуется и справедливо подчеркивает проблему с кодом «Не создавайте функции внутри цикла». Чтобы решить эту проблему, я попытался заменить приведенный выше код следующим:

for (index = 0; index < models.length; index++) {
    model = models[index];
    model.drop().success(dropTableCompleteCheck());
}

Это устраняет проблему с JSHint, но теперь Node sequenceize выдает следующее неперехваченное исключение:

error: Uncaught application error:
    TypeError: listener must be a function

Я пытаюсь вызвать функцию обратного вызова обещания успеха и одновременно удалить проблему JSHint. Есть ли другой способ сделать это, который делает и то, и другое, я был бы рад любым указателям.

Спасибо за ваше время.


person Gerard Downes    schedule 03.09.2013    source источник


Ответы (1)


Опустить скобки:

for (index = 0; index < models.length; index++) {
    model = models[index];
    //don't _invoke_ dropTableCompleteCheck, just _reference_ it
    model.drop().success(dropTableCompleteCheck);
}
person Peter Lyons    schedule 03.09.2013