Я уверен, что моя проблема основана на недостаточном понимании асинхронного программирования в node.js, но здесь идет.
Например: у меня есть список ссылок, которые я хочу выполнить. Когда каждый запрос асинхронного запроса возвращается, я хочу узнать, для какого URL он предназначен. Но, по-видимому, из-за условий гонки каждый запрос возвращается с URL-адресом, установленным в последнее значение в списке.
var links = ['http://google.com', 'http://yahoo.com'];
for (link in links) {
var url = links[link];
require('request')(url, function() {
console.log(url);
});
}
Ожидаемый результат:
http://google.com
http://yahoo.com
Фактический выход:
http://yahoo.com
http://yahoo.com
Итак, мой вопрос:
- Как передать URL (по значению) функции обратного вызова? ИЛИ
- Каков правильный способ связывания HTTP-запросов, чтобы они выполнялись последовательно? ИЛИ
- Что-то еще мне не хватает?
PS: Для 1. Я не хочу решение, которое проверяет параметры обратного вызова, но общий способ обратного вызова, зная о переменных "сверху".