如何异步返回angularjs范围函数

时间:2019-05-15 00:54:23

标签: javascript angularjs

我正在使用nedbangularjs做一个项目。

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 :(得分:0)

使用异步API,函数无法返回值,它们只能返回promise:

$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)
});

有关更多信息,请参见