Sam*_*ami 0 javascript asynchronous angularjs drop-down-menu
有人可以向我解释这段代码的作用吗?我知道它会抓取国家并将它们推送到网页中显示的列表,但为什么呢?我认为$ scope.countries = service.query()就足够了或者这样可以避免异步问题?
$q.all([$scope.address.$promise, $scope.countrys.$promise]).then(function() {
if (!$scope.address.country.id) {
return $q.reject();
}
return Country.get({id : $scope.address.country.id}).$promise;
}).then(function(country) {
$scope.countrys.push(country);
});
Run Code Online (Sandbox Code Playgroud)
代码注释中的描述.这是使用promise机制的有条件数据加载过程.如果对您来说不够详细,请尝试更详细地说明您的问题
// if address and countries was loaded (probably from ajax request)
$q.all([$scope.address.$promise, $scope.countrys.$promise]).then(function() {
// if address doesn't exist reject all actions
if (!$scope.address.country.id) {
return $q.reject();
}
// otherwise load country based on address field as a promise
return Country.get({id : $scope.address.country.id}).$promise;
}).then(function(country) {
// when loading process is finished add country to dataset
$scope.countrys.push(country);
});
Run Code Online (Sandbox Code Playgroud)
根据$q服务文件
$q.all([promise1, promise2, ...])
将多个promise组合成一个promise,在解析所有输入promise时解析.