如何在Angular

时间:2016-01-13 08:37:32

标签: angularjs

我使用几个外部数据库sto获取我需要在我的数据库中创建我想要的记录的数据。我有一个应用程序,用户可以在其中搜索并将电影添加到他们的监视列表中。

为此,我需要以下数据,

  1. 电影数据,例如标题,发布日期和ID。
  2. imdb评级。
  3. 演员和导演等电影作品。
  4. 这就是我现在的做法,

    movieAdd.add(movie.id).then(function(response){
      $scope.movieListID = response;
    
      movieAdd.imdbRating($scope.movieListID.imdb_id).then(function(response){
        $scope.movieImdbRating = response;
    
        movieAdd.crew(movie.id).then(function(response){
          $scope.movieCredits = response
    
          return createMovie.create({
            id:             $scope.movieListID.id,
            imdb_rating:    $scope.movieImdbRating.imdbRating,
            title:          $scope.movieListID.original_title,
            image:          $scope.movieListID.poster_path,
            movie_id:       $scope.movieListID.id,
            backdrop:       $scope.movieListID.backdrop_path,
            overview:       $scope.movieCredits.overview
          })
    
        })
      })
    })
    

    我调用一个服务,在一个范围内将响应返回给商店,以便我可以在以后使用它,依此类推。

    这是正确的做法,还是有更好的方法?

3 个答案:

答案 0 :(得分:2)

When chaining promises you can just return a promise instead of nesting them喜欢这样:

movieAdd.add(movie.id).then(function(response){
    $scope.movieListID = response;
    return movieAdd.imdbRating($scope.movieListID.imdb_id);
}).then(function(response){
    $scope.movieImdbRating = response;
    return movieAdd.crew(movie.id)
}).then(function(response){
  $scope.movieCredits = response

  return createMovie.create({
    id:             $scope.movieListID.id,
    imdb_rating:    $scope.movieImdbRating.imdbRating,
    title:          $scope.movieListID.original_title,
    image:          $scope.movieListID.poster_path,
    movie_id:       $scope.movieListID.id,
    backdrop:       $scope.movieListID.backdrop_path,
    overview:       $scope.movieCredits.overview
  });
})

这有助于保持代码扁平化和清洁

答案 1 :(得分:0)

这取决于您希望如何使用这些信息。如果你只想在scope范围内使用它,那么使用它就可以做到这一点。

通常情况下,我会使用LocalStorage作为JSON存储所请求的信息并从那里访问。

这取决于场景..

答案 2 :(得分:0)

尝试使用

  

$ q.all

承诺链

看下面的例子:

> http://jsfiddle.net/ThomasBurleson/QqKuk/