Как вернуть функцию видимости angularjs асинхронно - PullRequest
0 голосов
/ 15 мая 2019

Я делаю проект с nedb и angularjs.

В angularjs я старался изо всех сил, как я знаю, чтобы решить проблему ниже. В этом коде я хотел показать данные, найденные в переменной doc. Но когда я сохраняю ее в переменной taken_quizzes и пытаюсь вернуть эту переменную, я получаю неопределенное значение каждый раз.

$scope.chapterChange = function (chapter) {
   let taken_quizzes;

   score.find({ user_id: $scope.student.id, course_id: chapter }, (err, doc) => {
        taken_quizzes = doc
            console.log(doc)
  })

  return taken_quizzes
}

Я хочу вернуть результат, найденный в переменной doc, который хранится в переменной taken_quizzes.

1 Ответ

0 голосов
/ 15 мая 2019

При асинхронном API функции не могут возвращать значения, они могут только возвращать обещания:

$scope.chapterChange = function (chapter) {
   let deferred = $q.defer();  
   score.find({ user_id: $scope.student.id, course_id: chapter }, (err, doc) => {
        if (err) { 
           deferred.reject(err);
        } else {
           deferred.resolve(doc);
        };
   });    
   return deferred.promise;
};

Использование:

$scope.chapterChange(chapter)
  .then(function(doc) {
    console.log(doc);
}).catch(function(err) {
    console.log(err)
});

Для получения дополнительной информации см.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...