如何在Pubnub的ngHistory中实现回调?

粗暴的

尝试在on事件中检索历史消息时,加载时间过长。微调器显示和隐藏得太快。但是该消息尚未加载。

我们如何计算或获取准确的时间来加载历史记录?

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

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

                **ActivityIndicator.showSpinner();**

                    $scope.$apply(function(){
                    $scope.messages.push(payload.message);
                });

                $(".messages-wrap").scrollTop($(".messages-wrap")[0].scrollHeight);
                **ActivityIndicator.hideSpinner();**

            }); 
阳光明媚的格里森

非常感谢您试用PubNub AngularJS API!我会尝试提供一些帮助。在这种情况下,PubNub JS API和PubNub AngularJS API之间存在一些差异。

背景

在后台,PubNub JS APIhistory()方法立即返回,并在检索到给定的历史“页面”时调用回调。

为了简化此交互,AngularJS API不采用回调-而是$rootScope.$broadcast()在返回的历史有效负载中调用每个消息。

在此版本的AngularJS API中,当前无法“进入”“ ngHistory”方法以提供回调。但是,有两种解决方案可供您使用:一种一直存在,而第二种是我根据您的反馈刚刚添加的解决方案。

解决方案

1)在此处查看codepen(http://codepen.io/sunnygleason/pen/afqmh)。PubNub AngularJS API中有一个“逃生阴影”,可让您直接为高级用例调用JS API,称为jsapi您可以致电PubNub.jsapi.history({channel:theChannel,limit:theLimit,callback:theCallback})唯一要记住的是,这不会将消息事件触发到$ rootScope中,并且您将需要调用$rootScope.$apply()$scope.$apply()确保$scope对回调函数所做的任何更改都正确传播到视图。

2)在此处查看codepen(http://codepen.io/sunnygleason/pen/JIsek)。如果您更喜欢基于承诺的方法,我只是ngHistoryQ()在PubNub AngularJS API的1.2.0-beta.4版本中添加了一个函数。这将使您编写如下代码:

PubNub.ngHistoryQ({channel:theChannel,limit:theLimit}).then(function(payload) {
  payload[0].forEach(function(message) {
    $scope.messages.push(message);
  }
});

您可以使用“ bower install pubnub-angular”安装最新版本的AngularJS SDK。

使用这些解决方案中的任何一个,您都应该能够相应地显示和隐藏微调器。唯一的区别是在#2中,您需要编写如下代码:

var historyPromise = PubNub.ngHistoryQ({channel:theChannel,limit:theLimit});
showSpinner();
historyPromise.then(function(payload) {
  // process messages from payload[0] array
  hideSpinner();
});

这有帮助吗?让我知道你的想法。再次非常感谢您尝试此操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

delphi / firemonkey:如何在Activity中实现回调?

来自分类Dev

如何在 RecyclerAdapter 中实现多个回调?

来自分类Dev

如何在flutter中实现多级回调?

来自分类Dev

如何在回调中实现 firebase 设置请求

来自分类Dev

如何在 Kotlin 中的“run”或“apply”中引用实现回调

来自分类Dev

对如何在node.js中实现异步回调感到困惑

来自分类Dev

如何在Tkinter中的画布项目上实现鼠标悬停回调?

来自分类Dev

如何在另一个类中实现Retrofit回调?

来自分类Dev

如何在 Python 3 asyncio 中实现同步等待回调?

来自分类Dev

如何在 Bokeh 中为多选小部件实现 Javascript 回调

来自分类Dev

如何在Java中创建回调

来自分类Dev

如何在课程中列出回调

来自分类Dev

如何在JS中回调函数

来自分类Dev

如何实现recv()回调

来自分类Dev

GreenDao如何实现回调

来自分类Dev

C ++如何实现回调?

来自分类Dev

GreenDao如何实现回调

来自分类Dev

在Qt中实现回调

来自分类Dev

如何实现本机代码中的.NET方法回调?

来自分类Dev

什么是Instagram API中的回调URL以及如何实现

来自分类Dev

如何实现本机代码中的.NET方法回调?

来自分类Dev

我如何在C ++类中实现CreateThread-LPTHREAD_START_ROUTINE类型的ThreadProc回调函数

来自分类Dev

无法在pubnub JavaScript回调中获取错误

来自分类Dev

如何在pymongo中实现回滚?

来自分类Dev

Dartlang:如何实现回调方法

来自分类Dev

如何实现JavaScript样式的回调?

来自分类Dev

如何使用反射实现回调?

来自分类Dev

如何通过异步回调实现未来

来自分类Dev

如何实现可重用的回调函数