У меня есть массив URL-адресов, которые я извлекаю и обрабатываю, на ключи которых я хотел бы ссылаться при возврате данных. Каков предпочтительный способ гарантировать, что значение, определенное до асинхронного HTTP-вызова, переносится в закрытие, которое будет выполняться при возврате данных? В следующем примере переменная calendar_name
(как и ожидалось) теряется при возврате данных из HTTP-вызова, и мне нужно иметь возможность ссылаться на это значение внутри замыкания:
cals = {
"calendar one":"http://example.com/info/webcal/abc123.ics",
"calendar two":"http://example.com/info/webcal/xyz789.ics"
}
for calendar_name,calendar_url of cals
# Note that this is a Hubot script and the following line performs an HTTP call
msg.http(calendar_url)
.get() (err, res, body) ->
if res.statusCode is 200 and !err?
ics = ical.parseICS(body)
event_list = []
for _, event of ics
if event.type == 'VEVENT'
event_list.push event.summary
console.log("Scheduled events for " + calendar_name)
for event, k in event_list
console.log(event)