在异步执行的范围(块)中拆分数组
作者:互联网
在异步执行的范围(块)中拆分数组
这是对将数组拆分为异步范围的代码的解释。想象一下,我们有 100 个盒子,我们想要有 10 个 10 个盒子的范围。每个范围 10 需要异步运行。通过这种方式,我们获得了 JavaScript 循环的性能优化。我们不会阻塞 JavaScript 线程。
我想马上说,该函数仅在范围产生可整除结果时才有效。将 100 分成 10 个范围时,它可以正常工作。和 3 个范围内的 6 个。等等。它不适用于奇怪的剩菜,比如 3 个 10 的范围。
这可以在以下条件下修复:i % range === 0
使用我们的对话解决方案说明
这就是我在谈话中向他解释的方式:
我:它的作用是我们有 N 个项目,我们想将它们分成范围
Me:要拆分 M 长度范围内的许多项目,我们需要每个范围的开头和结尾
我:让我们谈谈盒子
我:我们有 N 个盒子,我们想将它们分成范围长度为 M 的范围
Me:每个范围M都有一个开始值和结束值
我:我们需要从最初的 N 个盒子中获取每个范围的开始和结束值
我:所以我们有两件事
我:提取每个开始和结束
我:并使用每个范围
我:所以要提取每个范围,我们遍历所有框,检查我们是否处于当前想要的范围长度,然后将 M 个框的范围放在一边
我:继续这样做,直到我们用完所有 N 个盒子
我:100中有多少个10的范围?
我的朋友 : 10
我:当然
我:当你在 0 … 100 的范围内时,你怎么知道你在范围的末端?
我的朋友: 好吧,如果它是 10 的乘数
我的朋友: 或者
我的朋友: 9
我:是的,因此 i%range
我:我们有一个新问题
我:我们需要一个新范围的开始和结束
我:一旦我们提取当前范围
我:这很简单
我:当我们在第一个范围的尽头时
我:我们在下一个开始
我:和下一个的结尾是偏移的
我:current_range_end + range
我:有道理
我:除了我们假装我们在一个循环中
Me: for i=from to end: // 做一些工作
我:现在唯一“复杂”的部分是回调
我:回调是异步代码、java、c++、JavaScript 等任何东西中非常常见的概念
我:这意味着我允许你在你喜欢的时候做一些事情,我会知道你什么时候这样做
我:这就像我让你擦鞋,当你完成你的结果时你打电话给我
我:那是回调
我:我给别人做完回调给他用,结果我可以用
我:有意义吗?
我的朋友: 是的
我:所以我们有
我: splitToChunks({ from: 0, to: 100, range: 10 }, (result) => console.log(result))
我:嗯,应该叫 运行范围异步
我:或者随便什么xD
我的朋友: 我在基督里的兄弟
我的朋友: 我认为
我的朋友: 我会不用 XDDDDDDDDDDDD
我的朋友: XDDDDDDDDDDDDDDDDDDDD
我:但至少
我:你明白吗?
我的朋友: 是的,主要是
代码
以下是 github gists 上的代码:
Code that splits the array into asynchronous ranges.
下面是codepen,你可以运行它:
On Codepen Code that splits the array into asynchronous ranges.
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
本文链接:https://www.qanswer.top/36976/20441612
标签:异步,拆分,10,range,数组,100,我们,范围 来源: https://www.cnblogs.com/amboke/p/16699410.html