编程语言
首页 > 编程语言> > javascript – Pubnub:如何在调用ngHistory之前估计历史聊天消息的数量

javascript – Pubnub:如何在调用ngHistory之前估计历史聊天消息的数量

作者:互联网

我想知道在调用ngHistory之前我们是否可以在pubnub通道中检索历史消息的计数.我正在使用Angularjs.

我需要显示一个加载器,直到加载消息历史记录.现在,由于pubnub将所有历史记录和聊天类型路由到单个事件,我需要在事件中隐藏加载器.但是,如果历史记录中没有消息,则会出现问题.由于事件至少未被调用一次,因此不会隐藏加载程序.如果我将用于隐藏微调器的代码放在事件之外,它将在加载历史记录之前很久就隐藏加载器.我已经尝试使用ngHistory的回调但它没有被触发.

如果我可以检索消息的数量,我可以隐藏加载器,如果历史消息计数为0.

我使用以下代码:

$scope.limit = 50;
ActivityIndicator.showSpinner(); // to show a spinner

PubNub.ngHistory({
                    channel : $scope.channel,
                    limit   : $scope.limit
                    });

$rootScope.$on(PubNub.ngMsgEv($scope.channel), function(ngEvent, payload) {

            $scope.messages.push(payload.message);
            ActivityIndicator.hideSpinner(); // to hide the spinner

        }); 

问题是当没有消息时,事件不会触发,如果事件不触发,则隐藏spinner永远不会被调用.

默认情况下,在pubnub中,它们是这样实现的.如果他们能够确保该事件至少被调用一次,那么问题就会得到解决.我查看了pubnub Angularjs库,我可以找到以下代码将消息路由到事件:

c.ngHistory = function(args) {
        args.callback = c._ngFireMessages(args.channel); // to route messages to event
        return c.jsapi.history(args);
      };

如果我评论第二行并实现ngHistory调用的回调,如下所示:

PubNub.ngHistory({
                    channel : $scope.channel,
                    limit   : $scope.limit,
                    callback : function(payload){
                        $scope.messages.push(payload.message);
                       ActivityIndicator.hideSpinner(); // to hide the spinner
                            }

                    });

然后代码工作正常.但是,不建议编辑库文件.我不应该这样做.你有什么其他想法来纠正这个问题吗?

解决方法:

AngularJS PubNub SDK确定ngHistory()方法返回的消息数

截至目前,无法确定频道中的消息数量.但是,您可以通过在PubNub.ngHistory({…})调用中使用limit:10参数来限制最大返回消息.

标签:javascript,angularjs,pubnub
来源: https://codeday.me/bug/20190703/1363590.html