【发布时间】:2016-02-04 05:23:44
【问题描述】:
我理解 Angular 的承诺,当 Angular 向 $http 发出请求时,.then(function(res){ return res }) 应该等到承诺得到解决。因此,如果我将请求附加到变量,变量的值不应该是已解决的承诺吗?
调用 Github API 的服务
is.service('githubApiService', function($http) {
this.repo = function(user, repo) {
var value = $http.get('https://api.github.com/repos/' + user + '/' + repo).then(function(json) {
return {
stargazers_count: json.data.stargazers_count,
watchers_count: json.data.watchers_count,
forks_count: json.data.forks_count,
watchers: json.data.watchers,
subscribers_count: json.data.subscribers_count
};
});
return value;
};
})
调用服务的指令
is.directive('chart', function(githubApiService) {
return {
restrict: 'E',
template: '<svg margin="[20, 30, 30, 40]", width="750" height="450"></svg>',
link: function(scope, element, attrs) {
var ais = githubApiService.repo('srph', 'angular-infinite-scroll');
var ai = githubApiService.repo('thenikso','angular-inview');
var ns = githubApiService.repo('jankuca', 'ng-scroller');
console.log(ai); // returns a promise!
}
}
})
【问题讨论】:
-
不。
then等待执行回调,直到promise 完成,然后返回另一个promise。在异步任务完成之前它不会阻塞你的脚本! -
兑现的承诺仍然是承诺,所以你的措辞有点奇怪。我怀疑你的意思是不同的。
标签: javascript angularjs xmlhttprequest promise angular-promise