#javascript #node.js #destructuring
Вопрос:
Я работаю в node.js и пытается устранить if/else if, изменив сегмент кода на основе одной переменной. Мне интересно, есть ли способ сделать это более динамично. У меня есть два раздела кода, которые идентичны, за исключением одного, который вызывает http и один https, в зависимости от того, как начинается URL:
const { http, https } = require('follow-redirects');
if ((thisURL.split(":")[0] == "http")){
const request = http.request(requestOptions, response => {
alist.href = response.responseUrl;
resolve(response.responseUrl);
});
request.end();
}
else if ((thisURL.split(":")[0] == "https")){
const request = https.request(requestOptions, response => {
alist.href = response.responseUrl;
resolve(response.responseUrl);
})
request.end();
}
Кажется , что должен быть способ вызвать http или https напрямую на основе разделения строки вместо необходимости if/else if
, но есть ли способ сделать это?
Ответ №1:
Вместо использования if/else вы можете получить protocol
и использовать array#includes
для проверки протокола. Вы можете создавать follow-redirects
на основе протокола.
const { http, https } = require('follow-redirects');
const [protocol] = thisURL.split(':');
const potocolLookup = {"https": https, "http": http};
if (["https", "http"].includes(protocol)) {
const request = potocolLookup(protocol).request(requestOptions, response => {
alist.href = response.responseUrl;
resolve(response.responseUrl);
})
request.end();
}