Angularjs需要等待服务器的响应,类似于回调

angularjs to wait for response from server, similar to callback

本文关键字:响应 类似于 回调 服务器 等待 Angularjs      更新时间:2023-09-26

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

下面是一个如何在长时间运行的调用中使用承诺的示例:http://fiddle.jshell.net/82vLx76y/

通过从函数返回承诺,我们可以延迟另一个链式函数的执行,并利用第一个函数的返回值。更多信息参见Angular的$q服务文档:https://docs.angularjs.org/api/ng/service/$q