相关疑难解决方法(0)

使用AngularJS进行服务器轮询

我正在努力学习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);
        });
    })();
};
Run Code Online (Sandbox Code Playgroud)

当我通过将线程休眠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);
    })();
};
Run Code Online (Sandbox Code Playgroud)

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

var x = Data.get({}, function () { });
Run Code Online (Sandbox Code Playgroud)

但得到一个错误:"错误:destination.push不是一个函数"这是基于$ …

javascript angularjs

85
推荐指数
3
解决办法
7万
查看次数

标签 统计

angularjs ×1

javascript ×1