распространение функции обратного вызова в функции мангуста

1
    TopicStatistics.methods.createTopicStatistics = function(callback)
    {
        // do stuff

        Topic.find({} , function (err, resultList)
        {
             if(err)
             {
                 // do stuff
                 if(typeof callback === "function")
                    callback(err); // callback undefined
             }
             else
             {
                 // do stuff
                 if(typeof callback === "function")
                    callback(null); // callback undefined
             }

        });
    };

Выше приведен код, который я пытаюсь выполнить. Проблема заключается в следующем:

Поскольку тема mongoose асинхронна, моя функция завершается до того, как mongoose.find выполняет свою работу, которая является нормальной, а также из-за этого очищается обратная переменная, и она становится неопределенной.

Я ищу способ распространения функции обратного вызова функции mongoose.find. Что-то вроде этого:

Topic.find({} , function (err, resultList, mycallback);

что позволит мне использовать его внутри моего блога mongoose и иметь возможность называть его, когда закончились операции внутри moboose blob.

  • 1
    Ваша первая попытка должна работать IMO (без передачи mycallback в Topic.find ). Если callback не undefined он должен быть undefined . Т.е. вы ничего не передаете TopicStatistics.createTopicStatistics
  • 0
    Вы были правы, это была функция, которую я проходил неправильно.
Теги:
callback

1 ответ

3

Я думаю, вам нужен еще один обратный вызов, определенный в области темы.

Topic.find({} , function (err, resultList, callback)
    {

Переменная "callback", которую вы используете внутри Topic.find(), ссылается на тот, который установлен в TopicStatistics.createTopicStatistics(). Поэтому, когда вы входите

Topic.find({} , function (err, resultList, mycallback);

"mycallback" исчезает, поскольку JavaScript не проверяет количество параметров.

  • 0
    Я не мог точно понять, что вы имели в виду. Не могли бы вы привести пример правильной реализации?
  • 1
    Я согласен с Laggingreflex выше. Я неправильно прочитал и подумал, что вы определили Topic.find () в своем примере, но теперь я вижу, что вы ИСПОЛЬЗУЕТ Topic.find () внутри createTopicStatistics ().
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню