首页 > 编程语言 >[Javascript] Using Generator to create a number generate with condition

[Javascript] Using Generator to create a number generate with condition

时间:2023-11-18 17:35:18浏览次数:40  
标签:secondTimer Generator min max create Javascript value minDiff firstTimer

const generateTimeMs = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min

/**
 * A generator which can generate numbers based on settings
 *
 * @param {number} min - min timer value, unit ms
 * @param {number} max - max timer value, unit ms
 * @param {number} minDiff - ensure that max - min > minDiff always true
 * @returns
 */
function* RCTimer(min, max, minDiff) {
    let invalidate = min + minDiff > max
    if (invalidate) {
        return new Error(`min value + minDiff value should less than max value`)
    }
    while (!invalidate) {
        const firstTimer = generateTimeMs(min + minDiff, max)
        yield firstTimer

        const secondTimer = generateTimeMs(min, firstTimer - minDiff)
        yield secondTimer
    }
}

const gen = RCTimer(1000, 4000, 2000)
let count = 0
while (count < 3) {
  count++
  console.log(`Round ${count}: `)
  const firstTimer = gen.next()
  console.log(`firstTimer: ${JSON.stringify(firstTimer)}`)
  const secondTimer = gen.next()
  console.log(`secondTimer: ${JSON.stringify(secondTimer)}`)
}

/**
 * Round 1: 
firstTimer: {"value":3365,"done":false}
secondTimer: {"value":1347,"done":false}
Round 2: 
firstTimer: {"value":3181,"done":false}
secondTimer: {"value":1075,"done":false}
Round 3: 
firstTimer: {"value":3682,"done":false}
secondTimer: {"value":1672,"done":false}
 */

 

标签:secondTimer,Generator,min,max,create,Javascript,value,minDiff,firstTimer
From: https://www.cnblogs.com/Answer1215/p/17840795.html

相关文章

  • JavaScript BOM对象
    一、window对象顾名思义window是窗口的意思,也就是浏览器的窗口,所有浏览器都支持window对象,因此所有的JavaScript全局对象,函数,变量都是window对象的成员全局变量是window对象的属性全局函数是window对象的方法子对象:属性:方法:二、location对象location对象用于获得当......
  • JavaScript事件
    JavaScript事件键盘事件:keypress键盘事件,keyup抬起,keydown按下文档:load加载表单:focus获得焦点,blur失去焦点,submit提交事件,change改变事件其他:scroll滚动事件,selectstart选择事件1.event事件对象常见的属性和方法e.target返回触发事件的对象标准e.srcElement返......
  • JavaScript事件
    一、  JavaScript事件在前端中,页面的每次交互和特效都是一个事件,其中任何一个html元素都是一个事件源,一个很事件源可以添加多个事件。二、事件中的event对象  只要发生一个事件就会产生一个event事件,event代表事件的状态1、event事件常见的属性和状态2、阻止默认事件的......
  • 11.17 复习JavaScript红宝书的笔记——
    一、原始值与引用值对于原始值和引用值的判断类型各自有对应的操作符,前者可以用typeof操作符lets="Nicholas";letb=true;leti=22;letu;letn=null;leto=newObject();console.log(typeofs);//stringconsole.log(typeofi);//numberconsole......
  • JavaScript-键盘事件
    键盘事件的种类键盘事件由用户击打键盘触发,主要有keydown、keypress、keyup三个事件,它们都继承了KeyboardEvent接口。keydown:按下键盘时触发。keypress:按下有值的键时触发,即按下Ctrl、Alt、Shift、Meta这样无值的键,这个事件不会触发。对于有值的键,按下时先触发keydown事件,再触发......
  • javascript 自定义分页组件
    仿boostrap前端分页组件的实现一 写一个前端自定义分页组件,需要考虑以下问题  /*     需要一个<ul id="pagination"></ul>标签   total; // 总数据的数量   pageSize; // 一页显示数量   pageIndex; // 当前页   */ 二实现细节编写html......
  • (javascript)将ztree树结构的数据转成二维数组
    ztree树结构的数据结构如下:[{"id":3990,"name":"泡沫灭火","iconShow":false,"children":[{"id":8616,......
  • CreateCollection_dataSyncService_执行流程源码解析
    CreateCollection_dataSyncService_执行流程源码解析milvus版本:v2.3.2CreateCollection这个API流程较长,也是milvus的核心API之一,涉及的内容比较复杂。这里介绍dataSyncService相关的流程。这边文章基于【CreateCollection流程_addCollectionMetaStep_milvus源码解析】这篇文章......
  • JavaScript之splice()
    参考:https://blog.csdn.net/weixin_45726044/article/details/120151153概述splice()方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。一个参数splice(index)——>从index的位置开始,删除之后的所有元素(包括......
  • created中两次数据修改,会触发几次页面更新
    面试题:created生命周期中两次修改数据,会触发几次页面更新?一、同步的先举个简单的同步的例子:newVue({el:"#app",template:`<div><div>{{count}}</div></div>`,data(){return{count:1,};},created(){this.count=2;......