在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 我在實(shí)現(xiàn)timeChunk函數(shù)時(shí),發(fā)現(xiàn)邏輯代碼多走了一次。但不知道為什么會(huì)這樣

我在實(shí)現(xiàn)timeChunk函數(shù)時(shí),發(fā)現(xiàn)邏輯代碼多走了一次。但不知道為什么會(huì)這樣

代碼如下:

var timeChunk = function(data, fn, count, time) {
    var that = this,
        obj,
        index = 0,
        timer;
    var start = function() {
        index += 1;
        for (var i = 0; i < Math.min(count || 1, (data.length + 1)); i++) {
            console.log('start次數(shù):' + index + ',i值:' + i + ', data長度:' +
                (data.length + 1))
            console.log(Math.min(count || 1, (data.length + 1)))
            obj = data.shift();
            fn(obj);
        }
    }
    return function() {
        timer = setInterval(function() {
            if (data.length === 0) return clearInterval(timer);
            start();
        }, count)
    }

}

var arr = [
    'nice to meet you',
    'hello',
    'xixi',
    'nice to meet you',
    'hello',
    'xixi'
];

var getMsgToDo = function(obj) {
    var div = document.createElement('div');
    div.innerHTML = obj;
    document.body.appendChild(div);
}

var renderList = timeChunk(arr, getMsgToDo, 3, 200);

renderList()

最終start執(zhí)行了3次 我傳入的是3 共有6條數(shù)據(jù) 應(yīng)該執(zhí)行2次才對(duì)

經(jīng)過排查 start在執(zhí)行第二次的時(shí)候 i=2時(shí)退出了循環(huán) 但我不知道為什么會(huì)這樣
回答
編輯回答
只愛你

start執(zhí)行第二次并且循環(huán)至i=2時(shí)是第五次循環(huán),這次循環(huán)的判定是

i < Math.min(count || 1, (data.length + 1))

此時(shí)的data.length只剩一條數(shù)據(jù)了,所以i不小于2,退出了循環(huán)。但是定時(shí)器也還沒有清理所以過了3ms之后又重新開始了從i=0的循環(huán),這也證明了最后一段控制臺(tái)輸出的是:start次數(shù)為3。
最后依我的愚見,應(yīng)該將循環(huán)的判定改為

i < count

也就是將循環(huán)的核心代碼改為

for (var i = 0; i < count; i++) {
    console.log('start次數(shù):' + index + ',i值:' + i + ', data長度:' +data.length)
    obj = data.shift();
    fn(obj);
}

最后附上我改后的控制臺(tái)輸出,不知道是不是你想要的樣子:

start次數(shù):1,i值:0, data長度:6
start次數(shù):1,i值:1, data長度:5
start次數(shù):1,i值:2, data長度:4
start次數(shù):2,i值:0, data長度:3
start次數(shù):2,i值:1, data長度:2
start次數(shù):2,i值:2, data長度:1

夜深了,腦子不太清醒,希望我的意見能給你帶來幫助

2017年2月2日 23:22