当前位置: 首页 > 面试题库 >

使用AngularJS进行服务器轮询

沈乐邦
2023-03-14
问题内容

我正在尝试学习AngularJS。我第一次尝试每秒钟获取新数据的工作:

'use strict';

function dataCtrl($scope, $http, $timeout) {
    $scope.data = [];

    (function tick() {
        $http.get('api/changingData').success(function (data) {
            $scope.data = data;
            $timeout(tick, 1000);
        });
    })();
};

当我通过使线程休眠5秒钟来模拟慢速服务器时,它将等待响应,然后再更新UI和设置另一个超时。问题是当我重写以上内容以使用Angular模块和DI进行模块创建时:

'use strict';

angular.module('datacat', ['dataServices']);

angular.module('dataServices', ['ngResource']).
    factory('Data', function ($resource) {
        return $resource('api/changingData', {}, {
            query: { method: 'GET', params: {}, isArray: true }
        });
    });

function dataCtrl($scope, $timeout, Data) {
    $scope.data = [];

    (function tick() {
        $scope.data = Data.query();
        $timeout(tick, 1000);
    })();
};

这仅在服务器响应速度很快时才有效。如果有任何延迟,它会在不等待响应的情况下每秒发出1个请求,并且似乎清除了UI。我想我需要使用回调函数。我试过了:

var x = Data.get({}, function () { });

但是出现了一个错误:“错误:destination.push不是一个函数”这是基于$
resource
的文档,但我实际上并不了解那里的示例。

如何使第二种方法起作用?


问题答案:

您应该tick在的回调中调用该函数query

function dataCtrl($scope, $timeout, Data) {
    $scope.data = [];

    (function tick() {
        $scope.data = Data.query(function(){
            $timeout(tick, 1000);
        });
    })();
};


 类似资料:
  • 问题内容: 对于需要快速刷新数据的应用程序,使用JavaScript轮询服务器的最佳实践是什么?我将jQuery用于前端,将Java Spring Framework用于后端。 刷新数据的示例可以是很快(每1秒)更新一次的项目列表。 问题答案: 您可能想使用jQuery的Ajax函数每秒钟左右轮询一次服务器。然后,服务器可以近乎实时地向浏览器发出指令响应。 您也可以考虑使用长轮询而不是上面的方法,

  • 问题内容: 我试图显示一个包含大量元素的表。我想对表进行分页并仅加载当前页面上显示的元素。现在,json加载了。 我在这里读到,最好在json标头中传递分页信息(currentPage,pagesCount和elementsCount)。 我如何从angular访问json头中的那些信息? 这是基本的js结构: 问题答案: 根据AngularJS $ resource文档,应该可以这样做:

  • 问题内容: 我正在使用AngularJS构建Web应用程序。该应用需要轮询返回JSON数据的URL,并使该数据可用于该应用的任何部分。从到目前为止的内容看,我最好的选择是创建一个处理轮询并保留其内部JSON数据内部缓存的服务,然后将该服务注入要查询该数据的应用程序的任何部分。我迷失的是如何实际去做。我找到的最接近的示例是这个问题,但它似乎是在创建一个由特定控制器手动调用的服务(它本身已绑定到给定的

  • 问题内容: 我有以下代码,在部署到测试服务器之前,它工作正常: 问题是我已部署到虚拟目录,并且下面的调用试图从服务器根目录访问GetUserList。这是有道理的,而且我知道许多解决方法。 我想知道的是一种 正确的 方式,该方式以可移植且可在Angular中维护的方式引用服务URL。 问题答案: 我建议在头部使用HTML基本标记,并对与此相关的所有路径进行编码。例如,在ASP.NET中,您可以获取

  • 问题内容: 我正在测试一个应用程序,该应用程序从邮箱中取出邮件,根据该邮件的内容执行一些操作,然后根据操作结果发送响应邮件。 我正在寻找一种为该应用程序编写测试的方法。理想情况下,我希望这些测试能够启动自己的邮件服务器,将测试电子邮件推送到该邮件服务器上的文件夹中,并让我的应用程序将邮件从测试开始的邮件服务器中删除。 配置应用程序以使用邮件服务器并不困难,但是我不知道在哪里寻找在Java中启动邮件

  • 本文向大家介绍使用python进行服务器的监控,包括了使用python进行服务器的监控的使用技巧和注意事项,需要的朋友参考一下 在linux服务器中,一切皆为文件,就是说,服务器运行的个中信息,其实是可以从某些文件中查询得到的;百度后,你会知道,在Linux系统中,有一个/proc的虚拟文件系统: Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核,而不需要重新引导内核系统,