循环里,设置执行间隔

在循环内控制,多长时间执行一次循环体,js没有提供这种方法,就只能自己写个判断时间的函数

第一种方法:es6之前我们可以用时间戳来判断

function sleep(n){
    var start=new Date().getTime();//定义起始时间的毫秒数

    while(true){
        var time=new Date().getTime();//每次执行循环取得一次当前时间的毫秒数
        if(time-start>n){//如果当前时间的毫秒数减去起始时间的毫秒数大于给定的毫秒数,即结束循环
            break;
        }
    }
}

function test(n){//用这个函数测试吧
    for(var i=0;i<3;i++){
        alert(i);
        sleep(3000);//每隔3000毫秒执行一次for循环
    }
}

第二种方法:有了es6,我们就可以借助promise来实现

// 我们可以把这个方法放到公共的js文件中(utils.js或common.js)
export async function sleep(time) {
    return new Promise((resolve) => {
        setInterval(() => {
            resolve();
        }, time);
    });
}


// 页面调用时 先引入进来
import { sleep } from '../common/utils'

// 具体使用时,直接方法名调用,下面是我简化删除了其他功能代码的一段小例子,仅供参考,下例是一个冒泡排序,交换两个值时每隔200毫秒交换一次,不让for循环立即执行
async startSort() {
    const { array } = this;

    for (let i = 0; i < array.length - 1; i++) {

        for (let j = 0; j < array.length - 1 - i; j++) {

            /* 等待0.2s */
            await sleep(200);

            if (array[j] <= array[j + 1]) {

                let temp = array[j];

                array[j] = array[j + 1];

                array[j + 1] = temp;

            }
        }
    }
                
}

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值