在AngularJS中使用 q 进 行 “ 同 步 ” 编 程 发 表 于 2015 − 04 − 06 ∣ 分 类 于 a n g u l a r j s ∣ 阅 读 次 数 : 86 今 天 群 里 有 位 朋 友 问 到 直 接 返 回 q进行“同步”编程 发表于 2015-04-06 | 分类于 angularjs | 阅读次数: 86 今天群里有位朋友问到直接返回 q进行“同步”编程发表于2015−04−06∣分类于angularjs∣阅读次数:86今天群里有位朋友问到直接返回http说读不到数据,原因在于$http是异步请求,而且是“不可期”的,你不知道什么时候这个请求完成了。
而对于这种需要“同步”编程的方式,AngularJS提供了一个内置Service $q,它提供了一种承诺/延后(promise/deferred),可以保证我们的调用代码一定能够拿到数据。所以我们用起来可以像同步调用一样,话说回来,最终还是xhr异步请求。
## Factory
app.factory(‘itemService’, [‘
h
t
t
p
′
,
′
http', '
http′,′q’, function ($http, $q) {
return {
query : function() {
var deferred = $q.defer();//声明承诺
KaTeX parse error: Expected 'EOF', got '}' at position 270: …不是数据,而是API }̲ }; }]); C…scope’, function (itemService,$scope) { // 注入itemService
var promise = itemService.query(); //获得承诺接口
promise.then(function(data) { // 成功回调
KaTeX parse error: Expected 'EOF', got '}' at position 26: … = data; }̲, function(data…q
本文作者: xialeistudio
本文链接: https//www.ddhigh.com/2015/04/06/angularjs-q.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!