Javascript angularjs等待来自服务器的响应,类似于回调
我遇到了一个问题,客户机没有等待服务器响应。我有一个在服务器上运行并返回数据的大查询。但在客户端,它并没有在处理数据之前等待服务器的响应。 我试过angularjs,但没有成功。 服务是“myService”,如下所示Javascript angularjs等待来自服务器的响应,类似于回调,javascript,angularjs,callback,Javascript,Angularjs,Callback,我遇到了一个问题,客户机没有等待服务器响应。我有一个在服务器上运行并返回数据的大查询。但在客户端,它并没有在处理数据之前等待服务器的响应。 我试过angularjs,但没有成功。 服务是“myService”,如下所示 this.getJsonData = function() { var searchData = caller.get("/metadata/Search").then(function(result){ return result.data; })
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;
};
下面是一个如何在长时间运行的调用中使用承诺的示例:
通过从函数返回一个承诺,我们可以推迟另一个链式函数的执行,并利用第一个函数的返回值。有关更多信息,请参阅Angular的$q服务文档:在加载DOM内容之前是否可以预先加载此数据?我只能在用户单击按钮时运行此数据提取,而您正试图通过ajax请求执行此操作?如果是这样,那么您可能希望向页面添加加载模式,以向用户显示工作正在后台进行,然后在传出ajax请求的数据可用时隐藏该模式。这不是UI屏幕拦截器问题。即使在返回数据之前,formatData循环也会被执行,从而导致错误。它必须处理$q、延迟和解析promises中的函数。是的,promises肯定是您想要走的路线。举个例子:我试图添加超时,但只是等待了一段时间,实际上并没有等待服务器响应。不要使用超时,它只是用来模拟长时间运行的任务。改为执行长时间运行的数据函数,并在其末尾解析$q。我更新了上面的代码。这也没用。有人能帮忙吗