我使用几个外部数据库sto获取我需要在我的数据库中创建我想要的记录的数据。我有一个应用程序,用户可以在其中搜索并将电影添加到他们的监视列表中。
为此,我需要以下数据,
这就是我现在的做法,
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
})
})
})
})
我调用一个服务,在一个范围内将响应返回给商店,以便我可以在以后使用它,依此类推。
这是正确的做法,还是有更好的方法?
答案 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/