其他分享
首页 > 其他分享> > 在异步执行的范围(块)中拆分数组

在异步执行的范围(块)中拆分数组

作者:互联网

在异步执行的范围(块)中拆分数组

这是对将数组拆分为异步范围的代码的解释。想象一下,我们有 100 个盒子,我们想要有 10 个 10 个盒子的范围。每个范围 10 需要异步运行。通过这种方式,我们获得了 JavaScript 循环的性能优化。我们不会阻塞 JavaScript 线程。

Photo by 查里斯·凯尼恩 on 不飞溅

我想马上说,该函数仅在范围产生可整除结果时才有效。将 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