Вы можете изменить handleRequest
на два параметра - url
, являющийся первым из них. При этом вы можете частично применить функцию через Function#bind
и так установить параметр url
во время вызова, но вы все равно будете ждатьвторой аргумент.
let sites = [
"https://example.com",
"https://example.net",
"https://example.org"
];
function handleRequest(url, res) {
console.log("handling:", url);
/* handling code */
}
//minimalistic dummy HTTP module that responds after 1 second
let https = {
get: handler => setTimeout(handler, 1000)
}
for (var i=0; i < sites.length; i++) {
let url = sites[i];
https.get(handleRequest.bind(this, url)) //partially apply handleRequest
}
Аналогичный результат можно получить с помощью curry - вместо двух параметров сначала взять один, а затем вернуть функцию, которая принимает другой. Это приводит (на мой взгляд) к лучшему синтаксису при вызове:
let sites = [
"https://example.com",
"https://example.net",
"https://example.org"
];
function handleRequest(url) {
return function actualHandler(res) {
console.log("handling:", url);
/* handling code */
}
}
//minimalistic dummy HTTP module that responds after 1 second
let https = {
get: handler => setTimeout(handler, 1000)
}
for (var i=0; i < sites.length; i++) {
let url = sites[i];
https.get(handleRequest(url))
}