AngularJS回调错误并不是一个函数

时间:2017-10-22 03:00:32

标签: angularjs http

我在行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;
});

1 个答案:

答案 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,即使在成功之后。