Реклама Google
Ещё реклама Google
javascript отлавливаем конец выполнения функций вызванных из цикла
0 за 0 против
дата 2014-12-26
поблагодарили 0
просмотров 338
статью добавил DooMka
добавил
DooMka
Асинхронный javascript, его преимущества в простом примере, конечно пришлось повозиться, но результат есть

Js javascript



var r = [];

function setts(time) {
    console.info('[start setts] ' + time);
    setTimeout(function () {
        console.info('[end] ' + time);
        r[time] = true;
        end();
    }, time);
}

function test() {
    var i = 0, max = 9;
    for (; i < max; i++) {
        console.info('[start test] ' + i);
        setts(i);
        r[i] = false;
    }
    end();
}

function end() {
    console.info('[Big end check] ');
    var i = 0, maxr = r.length, rslt = true;
    for (; i < maxr; i++) {
        if(!r[i]){
            rslt = false;
        }
//        console.info('[r] ' + r[i]);
    }
    if(rslt){
        console.info('[BIG END TRUE]');
    }
}

test();






Более надёжный вариант данного кода



var r = [];

function setts(time) {
    console.info('[start setts] ' + time);
    setTimeout(function () {
        console.info('[end] ' + time);
        r[time] = true;
        end();
    }, time);
}

function test() {
    var i = 0, j = 0, max = 9;
    for (; j < max; j++) {
        r[j] = false;
    }
    for (; i < max; i++) {
        console.info('[start test] ' + i);
        setts(i);
    }
    end();
}

function end() {
    console.info('[Big end check] ');
    var i = 0, maxr = r.length, rslt = true;
    for (; i < maxr; i++) {
        if (!r[i]) {
            rslt = false;
        }
//        console.info('[r] ' + r[i]);
    }
    if (rslt) {
        console.info('[BIG END TRUE]');
    }
}

test();

все пользователи
все группы

разработчики