javascript - Pubnub : How to estimate history chat messages count prior to calling ngHistory

标签 javascript angularjs pubnub

我想知道我们是否可以在调用 ngHistory 之前检索 pubnub channel 中的历史消息计数。我正在使用 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

        }); 

问题是当没有消息时,事件不会触发,如果事件不触发,隐藏微调器将永远不会被调用。

默认情况下,在 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() 方法确定要返回的消息数

到目前为止,还没有办法确定 channel 中的消息数量。但是,您可以通过在 PubNub.ngHistory({ ... }) 调用中使用 limit : 10 参数来限制 最大返回消息数。

关于javascript - Pubnub : How to estimate history chat messages count prior to calling ngHistory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25236436/

相关文章:

javascript - XMLHttpRequest:文档元素后的垃圾

javascript - 循环并验证多个 radio 输入

angularjs - 如何在firebase中使用相同的方法同时更新多个对象中的数据?

ios - 将 PubNub 集成到 Swift 框架中

javascript - AngularJS - 从 ng-repeat 获取当前对象

javascript - 如何访问父 Controller 中指令的对象?

javascript - 使用 AngularJS 读取 json

swift - 使用 Pods IOS 的 PubNub DDFileLogger 和 DDLog 警告

C: 我能知道使用 C SDK 的 pubnub 订阅中的还原选项吗

javascript - Javascript 中的原始类型/引用类型