每5秒钟对指定的数字重复此操作,并且必须检查整个阵列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每5秒钟对指定的数字重复此操作,并且必须检查整个阵列相关的知识,希望对你有一定的参考价值。

我必须检查此安排中的所有值。整个数据分发变量称为“ subscribingUser”,我想知道在尝试每5秒执行10次操作时是否存在问题或更好的方法来创建以下逻辑。

let loopCount = 10;
let NumberOfBundle = Math.ceil(subscribingUser.length / loopCount); // 176
let restOfBundle = subscribingUser.length % loopCount; // 8

let bundleCount = 1;
let start = 0;
let bundleInterval = setInterval(async() => {

   for(let i = start; i < loopCount; i++) {
       //Perform 10 specific actions ...
       await subscribingUser[i] ~
   };

   //Send all 10 and raise the BundleCount
   bundleCount += 1;
   start = loopCount;

   if (bundleCount == NumberOfBundle && restOfBundle != 0) {
       loopCount = restOfBundle - 1;
   } else {
       loopCount = loopCount * bundleCount;
   }

   if(bundleCount == NumberOfBundle + 1) {
       clearInterval(bundleInterval);
   }

}, 5000);
答案
  1. 首先,请考虑避免使用
for(...){
  await ...
}

因为您将按顺序执行您的工作,这抵消了使用捆绑软件的兴趣(并行处理捆绑软件中的每个用户)

旨在]

await Promise.all(users.map(u => doSomethingWithUser(u)))
  1. 关于逻辑

您可以考虑将散装商品与“客户”代码分开

function bulker(arr, n) {
  return {
    async forEach (fn, binding) {
      for(let i = 0; i < arr.length; i += n) {
        await fn.call(binding, arr.slice(i, i + n), i, i  +n >= arr.length)
      }
    }
  } 
}

const doSomethingWithUser = u => {
  console.log('go', u);
  return Promise.resolve(u)
}

;(async _=> {

  //choose whenever you want to wait or not
  //bulker just gives you the next slice once you "resolve"
  await bulker([0, 1, 2, 3, 4], 2).forEach(async (users, i, done) => {
    await Promise.all(users.map(doSomethingWithUser))
    if (done) return
    return new Promise((ok, ko) => setTimeout(ok, 1000))
  })
  console.log('done!')
})()

以上是关于每5秒钟对指定的数字重复此操作,并且必须检查整个阵列的主要内容,如果未能解决你的问题,请参考以下文章

大量随机生成数字中的重复项

5.17移数字游戏

检查数据密集型应用程序中的重复输入项

求编程高手,c语言编写产生十道十以内的除法,数字随机产生且必须整除,并且每题正确得十分,错误零分,统

matlab如何实现间隔几秒钟读一次数据啊

VBA Macro On Timer样式每隔几秒钟运行代码,即120秒