经过一段时间的延迟后,如何在数组中显示一组项?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经过一段时间的延迟后,如何在数组中显示一组项?相关的知识,希望对你有一定的参考价值。

我正在开发一个聊天应用程序。我从api立即获取所有聊天历史记录并将其存储在数组名称$ scope.channel中。我使用ng-repeat显示数组中存在的这些项目列表。我想要做的是在一些间隔中显示数组中的数据集。例如,当用户打开聊天屏幕时,他/她应该能够看到几个聊天/图像。然后在几秒钟后加载mmore数据。

答案

正如@Sajjad Shahi建议你可以使用$timeout服务。也许类似以下内容。您可以设置所需的延迟和卡盘尺寸。使用$scope.channel数组作为srcArray,使用空数组yourArrayToDisplay作为destArray。在channel指令中用yourArrayToDisplay替换ng-repeat。这应该给我你想要的结果。

var dalayedChunkHandler =  {
    chunkSize: 1,
    delay: 2000,
    timeout: null,
    srcArray: [],
    destArray: [],
    dalayedChunk: function(){
        var _this = this;

        var len = _this.destArray.length;
        Array.prototype.push.apply(_this.destArray,_this.srcArray.slice(len, len + _this.chunkSize));                    

        if(_this.srcArray.length > _this.destArray.length) _this.start();
    },
    start: function(){
        var _this = this;
        _this.timeout = $timeout(function(){_this.dalayedChunk.call(_this)}, _this.delay)
    }
};


$scope.yourArrayToDisplay = []; // use this array for ng-repeat
dalayedChunkHandler.destArray = $scope.yourArrayToDisplay;
dalayedChunkHandler.srcArray = $scope.chatHistoryArray; // the array you got
dalayedChunkHandler.start();

以上是关于经过一段时间的延迟后,如何在数组中显示一组项?的主要内容,如果未能解决你的问题,请参考以下文章

删除下拉列表中的重复项,组项

显示使用延迟作业一段时间后运行的方法

如何在另一个列表视图中显示其各自组项的子项

延迟一段时间后显示 uipickerview

如何延迟从页面加载开始显示Gif?

如何在执行一组工作人员之间正确延迟