angularjs处理$ http.get延迟

时间:2016-09-13 08:27:33

标签: angularjs http get promise angular-promise

我需要从本地文件中检索xml数据。

使用这个简单的代码:

angular.module('exampleApp', [])
.controller('ExampleController', function($scope, $http) {

    var turniOra = this;

    $http.get("/XmlTemp/turni_giorno.xml",
        {
            transformResponse: function (cnv) {
                var x2js = new X2JS();
                var aftCnv = x2js.xml_str2json(cnv);
                return aftCnv;
            }
        })
        .then(
            function(datiConve){
                turniOra.prova = datiConve.data.turni.giornata;
            }
        );

    console.log(turniOra.prova); // undefined

});

控制台日志返回“undefined”,但是带有$ timeout指令:

$timeout(function() {
    console.log(turniOra.prova);
}, 50);

我有正确的xml数据对象。

为什么会发生这种情况,如何在没有$ timeout的情况下获得相同的结果?

由于

1 个答案:

答案 0 :(得分:1)

这很正常。

您的请求是通过AJAX完成的。这似乎是您要求的是异步。

这是什么意思? 您的requets将被发送到服务器,您的脚本将继续执行您的代码,而无需等待服务器的响应。

所以为了你的代码正在这样做:

  • 发送http请求
  • 登录控制台
  • 获取http响应

但是当你超时时,你已经在超时结束前得到了http响应。

您的解决方案是将您的日志添加到此功能中:

function(datiConve){
    turniOra.prova = datiConve.data.turni.giornata;
    console.log(turniOra.prova);
}

有关角度的更多信息,请查看angular promises

这是$ http使用的