【发布时间】:2015-09-08 20:53:53
【问题描述】:
我遇到了客户端没有等待服务器响应的问题。我有一个在服务器上运行并返回数据的大查询。但是在客户端,它在处理数据之前并不等待服务器的响应。 我尝试了 angularjs .then 函数但没有成功。 服务是“myService”,如下所示。
this.getJsonData = function() {
var searchData = caller.get("/metadata/Search").then(function(result){
return result.data;
});
return searchData;
};
呼叫服务
myService.getJsonData().then(
function(data) {
formatData(data);
},
function(err) {
console.log("Error here" + err);
});
现在调用了 formatData,而来自服务器调用的响应在 getJsonData 中等待处理。
谁能帮我解决这个问题。
**********已编辑********** 试过了,还是不行
this.getJsonData = function() {
var deffered = $q.seDefer();
caller.get("/metadata/Search").then(function(result){
deffered.resolve(result.data);
});
return deffered.promises;
};
【问题讨论】:
-
可以在加载 DOM 内容之前预先加载这些数据吗?
-
我只能在用户点击按钮时运行此数据提取
-
您正试图通过 ajax 请求这样做?如果是这样,那么您可能希望向页面添加一个加载模式,以向用户显示工作正在后台进行,然后当数据可从传出的 ajax 请求中获得时隐藏该模式。
-
这不是 UI 屏幕拦截器问题。即使在返回数据之前,formatData 循环也会被执行,从而导致错误。它必须与 Promise 中的 $q、defer 和 resolve 函数有关。
-
是的,promise 肯定是你想要走的路。请参阅此示例:stackoverflow.com/questions/27238928/…
标签: javascript angularjs callback