Динамический выбор объектов в node.js чтобы удалить, если/иначе, если

#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();
}