ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-09-16 12:31:21  阅读:295  来源: 互联网

标签:异步 拆分 10 range 数组 100 我们 范围


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

这是对将数组拆分为异步范围的代码的解释。想象一下,我们有 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有