Dark_Scorpion
@Dark_Scorpion

Как внести переменную цикла в калбек ассинхроного запроса?

Как использовать переменную key в калбеке, если к моменту запуска первого обработчика, key=последнему ключу.
Пробовал сохранять во временную переменную внутри цикла - не помогло.
Как вариант, передавать key как аргумент функции, но как это сделать в npm модуле request?
for(var key in reqObj) {
  request(options, (err, res, body) => {
    if (!err && res.statusCode == 200) {
       resultObj[key] = body;
    }
    ....
  });
}
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Самое простое, заменить var на let или const.

'use strict';

let o = { a: 1, b: 2, c: 3 };

for (var k in o) {
    process.nextTick(() => console.log(k, o[k]));
}

for (const k in o) {
    process.nextTick(() => console.log(k, o[k]));
}


$ node a.js
c 3
c 3
c 3
a 1
b 2
c 3
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ACCNCC
@ACCNCC
Делаю игры!
Через promise

for(var key in reqObj) {
    new Promise(function(resolve, reject) {
        var k = key;
            request(options, (err, res, body) => {
            if (!err && res.statusCode == 200) {
                resultObj[k] = body;
            }
        ....
        });
    });
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы