首页 > 编程语言 >[Javascript] Encapsulate chunk operation

[Javascript] Encapsulate chunk operation

时间:2024-11-25 21:01:00浏览次数:6  
标签:function task chunk Javascript scheduler now Encapsulate taskHanlder datas

function main() {
    const datas = new Array(10000).fill(null).map((_, i) => i)

    function taskHanlder(_, i) {
        console.log(i)
    }

    performChunkNode(datas, taskHanlder)
}

main()

function performChunk(datas, task, scheduler) {
    if (typeof datas === 'number') {
        datas = {
            length: datas
        }
    }

    if (datas.length === 0) {
        return;
    }
    let i =0;

    function _run() {
        if (i >= datas.length) {
            return;
        }
        scheduler((goOn) => {
            while(goOn() > 0 && i < datas.length) {
                task(datas[i], i)
                i++
            }
            _run()
        })
    }
    _run()
}

function performChunkBrowser(datas, taskHanlder) {
    const scheduler = (task) => {
        requestIdleCallback((idle) => {
            task(() => idle.timeRemaining() > 0)
        })
    }

    performChunk(datas, taskHanlder, scheduler)
}

function performChunkNode(datas, taskHanlder) {
    const scheduler = (task) => {
        setTimeout(() => {
            const now = performance.now()
            task(() => performance.now() - now <= 10)
        }, 1000)
    }

    performChunk(datas, taskHanlder, scheduler)
}

 

标签:function,task,chunk,Javascript,scheduler,now,Encapsulate,taskHanlder,datas
From: https://www.cnblogs.com/Answer1215/p/18568721

相关文章

  • 第十章JavaScript的应用
    10.1JavaScript概述10.1.1JavaScript简介JavaScript是一种基于对象(0bject)和事件驱动(EventDriven)并具有安全性能的脚本语言,能够与HTML(超文本标记语言)、Java语言一起在Web页面中与Web客户交互它无须经过先将数据传给服务器端(Server)、再传回来的过程,而直接可以......
  • JavaScript中数组知识点
    数组数组这种数据类型可以在一个变量里保存多个值,每个值都有一个数值索引,而且能够保存任何数据类型(比如布尔值、数值、字符串、函数、对象),甚至能够保存其他数组。我们可以通过引用数组的数字索引来访问任何的项,这个索引和项在数组中的位置是对应的。通常,我们把数组中的项称......
  • 盘点2个.Net版本的JavaScript执行引擎
    https://zhuanlan.zhihu.com/p/692270642 推荐2个JavaScript开源引擎,方便在C#执行JavaScript脚本。1、jurassicJurassic是一个开源的托管JavaScript执行引擎,使用MS-PL授权协议。它的目标是成为.NET平台上功能最强,最为标准的JavaScript引擎。功能强大:支持ECMAScript3和ECMAS......
  • JavaScript核心语法(3)
    前两篇文章大概把JavaScript的基础语法讲了一下,这篇文章主要讲讲ES6的核心语法。ES6的核心语法说实话其实有点多,我重点挑一些经常在项目中用到的来讲,其他一些我没怎么见过的就不讲了。目录1.变量和常量变量(let 和 var)varlet常量(const)总结2.箭头函数语法示例特性和......
  • [Javascript] Import the Same JavaScript Module Multiple Times with Cache Busting
    WhenattemptingtoloadthesamemoduletwiceinJavaScriptyou'llhitacacheandcodewon'tre-run.Inscenarioswhereyouactuallydowanttohavestateinyourmodules,you'llhavetouseacache-bustingtechniquebypassingaquerypar......
  • javascript-语句
    1.对象时不可迭代访问的。尝试使用for/of循环会throwTypeErrorleto={x:1,y:2,z:3};for(letelementofo){console.log(element);}//throwtypeError2.可以使用Object.keys()方法实现对象迭代leto={x:1,y:2,z:3};letkeys="";for(letkofObject.keys(o)){keys+=k;}......
  • JavaScript有几种类型值?能否画出它们的内存图?
    JavaScript有七种原始数据类型和一种引用类型:原始数据类型(PrimitiveDataTypes):存储在栈(Stack)内存中,值直接存储在变量访问的位置。Boolean:true或falseNull:只有一个值null,表示空或不存在的值。Undefined:变量声明了但未赋值时的默认值undefined。Number:所......
  • 【分享】这篇教程助力你成为 JavaScript 糕手!(十一)
    第十一章:异步编程11.1异步编程的概念在JavaScript中,异步编程是一种非常重要的编程模式,它用于处理那些不会立即完成的操作,而是在一段时间后才会返回结果的任务。传统的同步编程模式下,代码是按照从上到下的顺序依次执行的,每一行代码都必须等待前一行代码执行完毕后才会......
  • 前端必知必会-JavaScript 按位运算
    文章目录JavaScript按位运算JavaScript使用32位按位操作数JavaScript按位与JavaScript按位或JavaScript按位异或JavaScript按位与(&)JavaScript按位或(|)JavaScript按位异或(^)JavaScript按位非(~)JavaScript(零填充)按位左移(<<)JavaScript(零填充)右移......
  • 前端必知必会-JavaScript 运算符优先级
    文章目录JavaScript运算符优先级运算符优先级值增量运算符算术运算符移位运算符关系运算符比较运算符按位运算符逻辑运算符条件(三元)运算符赋值运算符总结JavaScript运算符优先级运算符优先级描述算术表达式中执行运算的顺序。乘法(*)和除法(/)的优先级高于......