AngularJS 轮询器抛出
AngularJS Poller Throws
我正在尝试为一个应用程序设置轮询,并且我有一个执行最低限度的实现,它最初看起来 运行,获得第一个响应,但未能调用 $timeout并抛出异常(见下文)。我不明白为什么它不能正确轮询它看起来应该工作,API 说 $timeout 需要一个函数...有什么想法吗?
如果我注释掉第 65 行 $timeout(...);我没有收到错误。
异常
Error: [$http:badreq] Http request configuration must be an object. Received: function ()
http://errors.angularjs.org/1.4.7/$http/badreq?p0=function%20()
at angular.js:68
at $http (angular.js:10189)
at scoreboard-service.js:65
at processQueue (angular.js:14745)
at angular.js:14761
at Scope.$eval (angular.js:15989)
at Scope.$digest (angular.js:15800)
at Scope.$apply (angular.js:16097)
at done (angular.js:10546)
at completeRequest (angular.js:10744)
.run
中的轮询工厂和初始化。
投票工厂
/**
*
*/
.factory('ScoreboardPollFactory', ['ConfigSettings', 'ScoreboardFactory', '$http', '$timeout',
function (ConfigSettings, ScoreboardFactory, $timeout) {
var pollingTimeout = ConfigSettings.pollingTimeout;
var data = {response: {}, calls: 0};
var poll = function (courtId) {
var courtId = 1; // testing app so hardcoded for now till API is ready
console.log(ScoreboardFactory); // debug: has correct factory object, and never makes it back here after hitting $timeout
ScoreboardFactory.getCourtScore(courtId).then(function (response) {
data.response = response.data
data.calls++;
console.log(response); // debug: contains first response
console.log(data);
console.log(poll); // debug: outputs poll function
$timeout(function() { // <-- this is line 65 from error
poll(courtId);
}, pollingTimeout);
});
}
poll();
return {
data: data
};
}])
/**
*
*/
.run(['ScoreboardPollFactory', function (ScoreBoardPollFactory) {
}]);
这是你的问题(排成一行,这样你就可以看到发生了什么)
.factory('ScoreboardPollFactory',
['ConfigSettings', 'ScoreboardFactory', '$http', '$timeout',
function (ConfigSettings, ScoreboardFactory, $timeout) {
您正在将 $http
服务注入为 $timeout
。
我建议使用像 ng-annotate 这样的构建工具来创建依赖项注入数组,这样你就可以避免 运行 出现这样的问题。
我正在尝试为一个应用程序设置轮询,并且我有一个执行最低限度的实现,它最初看起来 运行,获得第一个响应,但未能调用 $timeout并抛出异常(见下文)。我不明白为什么它不能正确轮询它看起来应该工作,API 说 $timeout 需要一个函数...有什么想法吗?
如果我注释掉第 65 行 $timeout(...);我没有收到错误。
异常
Error: [$http:badreq] Http request configuration must be an object. Received: function ()
http://errors.angularjs.org/1.4.7/$http/badreq?p0=function%20()
at angular.js:68
at $http (angular.js:10189)
at scoreboard-service.js:65
at processQueue (angular.js:14745)
at angular.js:14761
at Scope.$eval (angular.js:15989)
at Scope.$digest (angular.js:15800)
at Scope.$apply (angular.js:16097)
at done (angular.js:10546)
at completeRequest (angular.js:10744)
.run
中的轮询工厂和初始化。
投票工厂
/**
*
*/
.factory('ScoreboardPollFactory', ['ConfigSettings', 'ScoreboardFactory', '$http', '$timeout',
function (ConfigSettings, ScoreboardFactory, $timeout) {
var pollingTimeout = ConfigSettings.pollingTimeout;
var data = {response: {}, calls: 0};
var poll = function (courtId) {
var courtId = 1; // testing app so hardcoded for now till API is ready
console.log(ScoreboardFactory); // debug: has correct factory object, and never makes it back here after hitting $timeout
ScoreboardFactory.getCourtScore(courtId).then(function (response) {
data.response = response.data
data.calls++;
console.log(response); // debug: contains first response
console.log(data);
console.log(poll); // debug: outputs poll function
$timeout(function() { // <-- this is line 65 from error
poll(courtId);
}, pollingTimeout);
});
}
poll();
return {
data: data
};
}])
/**
*
*/
.run(['ScoreboardPollFactory', function (ScoreBoardPollFactory) {
}]);
这是你的问题(排成一行,这样你就可以看到发生了什么)
.factory('ScoreboardPollFactory',
['ConfigSettings', 'ScoreboardFactory', '$http', '$timeout',
function (ConfigSettings, ScoreboardFactory, $timeout) {
您正在将 $http
服务注入为 $timeout
。
我建议使用像 ng-annotate 这样的构建工具来创建依赖项注入数组,这样你就可以避免 运行 出现这样的问题。