angularjs – 在Angular中有多个调用等同一个promise
发布时间:2020-12-17 17:58:07 所属栏目:安全 来源:网络整理
导读:我在页面上有多个使用相同服务的控制器,为了举例我们将调用服务USER. 第一次调用USER.getUser()时,它会对用户的GET数据执行$http请求.调用完成后,它将数据存储在USER.data中.如果对USER.getUser()进行另一次调用,它会检查USER.data中是否有数据,如果有数据,
我在页面上有多个使用相同服务的控制器,为了举例我们将调用服务USER.
第一次调用USER.getUser()时,它会对用户的GET数据执行$http请求.调用完成后,它将数据存储在USER.data中.如果对USER.getUser()进行另一次调用,它会检查USER.data中是否有数据,如果有数据,则返回该数据,而不是进行调用. 我的问题是对USER.getUser()的调用发生得如此之快,以至于USER.data没有任何数据,因此它再次触发$http调用. 以下是我现在为用户工厂提供的信息: .factory("user",function($http,$q){ return { getUser: function(){ var that = this; var deferred = $q.defer(); if(that.data){ deferred.resolve(that.data); } else { $http.get("/my/url") .success(function(res){ that.data = res; deferred.resolve(that.data); }); } return deferred.promise; } } }); 我希望我的问题有道理.任何帮助将非常感激. 解决方法
这对你有用吗?
.factory("user",$q) { var userPromise; return { getUser: function () { if (userPromise) { return userPromise; } userPromise = $http .get("/my/url") .then(function(res) { return res.data; }); return userPromise; } } }) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |