Предположим, что в такой ситуации мне нужно выполнить некоторую работу в различных временных интервалах .
Итак, я получил массив для описания плана работы следующим образом.
var jobs = [ [ "a", 10 ], [ "b", 20 ], [ "c", 25 ], [ "d", 30 ], [ "e", 15 ], ... ];
Тогда возникает вопрос.Должен ли я ставить ALL задач в Web Apis за один раз, как это?
var timer = 0;
jobs.forEach( job => {
timer += job[1] * 100;
window.setTimeout( () => console.log( job[0] ), timer );
} );
jobs = undefined;
Ничего не осталось в пространстве JavaScript, кажется чистым, но многие Web Apis зарегистрированы.
Илия должен использовать обычный рекурсивный способ, подобный этому?
var tick = () => {
if ( ! jobs.length ) return;
else job = jobs.shift();
window.setTimeout( () => {
tick();
console.log( job[0] );
}, job[1] * 100 );
}
tick();
В пространстве JavaScript всегда остается большой массив, но используется только 1 Web Api.
Или такой глобальный интервальный цикл?
var timer = 0;
window.setInterval( () => {
if ( ! jobs.length ) return ;
else if ( ++ timer >= jobs[0][1] ) {
timer = 0;
console.log( jobs[0][0] );
jobs.shift();
}
}, 100 );
Пользовательский цикл обработки событий, как я думаю, и рекурсивный способ.
Итак, есть ли разница между этими тремя способами?
В любом случае, эта ситуацияявляется страницей, основанной на долгом времени выполнения браузера.
Не требуется строго точное время, но необходимо использовать как можно меньше ЦП / памяти.
Какой метод значительно экономит память после веб-страницыоткрывается например, один месяц?