Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs等待来自服务器的响应,类似于回调_Javascript_Angularjs_Callback - Fatal编程技术网

Javascript angularjs等待来自服务器的响应,类似于回调

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; })

我遇到了一个问题,客户机没有等待服务器响应。我有一个在服务器上运行并返回数据的大查询。但在客户端,它并没有在处理数据之前等待服务器的响应。 我试过angularjs,但没有成功。 服务是“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;
  };

下面是一个如何在长时间运行的调用中使用承诺的示例:


通过从函数返回一个承诺,我们可以推迟另一个链式函数的执行,并利用第一个函数的返回值。有关更多信息,请参阅Angular的$q服务文档:

在加载DOM内容之前是否可以预先加载此数据?我只能在用户单击按钮时运行此数据提取,而您正试图通过ajax请求执行此操作?如果是这样,那么您可能希望向页面添加加载模式,以向用户显示工作正在后台进行,然后在传出ajax请求的数据可用时隐藏该模式。这不是UI屏幕拦截器问题。即使在返回数据之前,formatData循环也会被执行,从而导致错误。它必须处理$q、延迟和解析promises中的函数。是的,promises肯定是您想要走的路线。举个例子:我试图添加超时,但只是等待了一段时间,实际上并没有等待服务器响应。不要使用超时,它只是用来模拟长时间运行的任务。改为执行长时间运行的数据函数,并在其末尾解析$q。我更新了上面的代码。这也没用。有人能帮忙吗