我在行callback(response.data)
中有一个错误,告诉回调不是函数。好吧,我是新手,我正在试图弄清楚如何解决这个问题,但我很难过。任何想法都表示赞赏。谢谢
app.service('NotificationPollService', function ($q, $http, $timeout) {
var notification = {};
notification.poller = function (callback, error) {
return $http.get('api/sample.php').then(function (response) {
if (typeof response.data === 'object') {
callback(response.data);
} else {
error(response.data);
}
$timeout(notification.poller, 2000);
});
}
notification.poller();
return notification;
});
答案 0 :(得分:2)
您将poller
声明为一个函数,它接收两个函数作为参数,但是您在两个不同的位置调用它而没有参数:
notification.poller();
和
$timeout(notification.poller, 2000);
请记住,您可以将变量的值记录到控制台console.log(callback, error)
,在这种情况下,您会看到它打印undefined, undefined
。
在该行中调用notification.poller()
的意图是什么?看起来该功能应该由您的服务的用户调用,如下所示:
notification.poller(data => console.log(`Received some data! ${data}`),
error => console.error(`Some error occurred: ${error}`));
最后,poller
的目的是什么?通过我想象的名称它将调用该端点一些固定的X次(轮询),并且在X失败之后它会放弃,但它总是再次调用poller
,即使在成功之后。