Добрый день!
Пишу юзерскрипт.
Есть примерно такой код:
function runTest(){
let callback = () => {
console.log("Done");
};
let promises = [];
let i = 0;
let someFunct = resolve => {
setTimeout(()=>{
console.log(i); //Всегда 10
resolve();
}, 100);
};
for (; i<10; i++){
promises.push(new Promise(someFunct));
}
Promise.all(promises).then(() => callback());
}
В консоль 10 раз подряд выводится 10. Что я делаю не так?
Если убрать setTimeout, работает нормально, но представьте себе, что тут get-запрос...
Я могу поместить создание функции в цикл:
function runTest(){
let callback = () => {
console.log("Done");
};
let promises = [];
for (let i = 0; i<10; i++){
let someFunct = resolve => {
setTimeout(()=>{
console.log(i);
resolve();
}, 100);
};
promises.push(new Promise(someFunct));
}
Promise.all(promises).then(() => callback());
}
и тогда всё работает, но Tampermonkey не советует так делать (предупреждение "Создание функции в цикле"). Как быть?