Новая переменная в цикле while [дубликат]

146
31 октября 2018, 20:50

На данный вопрос уже ответили:

  • Почему асинхронная функция внутри цикла выполняет последнюю итерацию много раз? 2 ответа

Подскажите, как в моем случае передавать в анонимную функцию новое значение переменной position в цикле. С let работает, но хотелось бы правильно организовать мой случай, где очевидно, что position принимает одно и тоже значение для всех функций.

var data = [];
var arr = [];
while(true) {
    var position = data.push(Math.random()) - 1; 
    addFunction (function () {
        data[position] = 0;
    })
    if (data.length>9) break;
}
function addFunction(fn) {
    arr.push(fn);
}
setTimeout(function(){
    arr.forEach(item => item())
},2000)
Answer 1

Решение понял сам, в данном случае анонимная функция не справляется с задачей:

var data = [];
var arr = [];
while(true) {
    var position = data.push(Math.random()) - 1; 
    addPosition(data,position)
    if (data.length>9) break;
}
function addFunction(fn) {
    arr.push(fn);
}
function addPosition(data,position) {
    addFunction (function () {
        data[position] = 0;
    })  
}
setTimeout(function(){
    arr.forEach(item => item())
},2000)
READ ALSO
443 порт с использованием Express

443 порт с использованием Express

Есть такой код, который прослушивает 443 порт:

160
За получить адрес сайта без доменного имени?

За получить адрес сайта без доменного имени?

Как с помощью javascript получить адрес сайта без доменного имени?

155
Определение цвета элемента в canvas при клике

Определение цвета элемента в canvas при клике

Возникла проблема с получением нужного цветаВ canvas нарисовала две фигуры

196