Как изменить вызов функции на основе значения

Импортированы 3 функции:

import { searchShip, searchLcl, searchFcl } from "services/logisticsService";

searchData = {
  currentPort: currentPort,
  destinationPort: destinationPort,
  date: readyTOLoad,
  type: containerType,  // containerType is geting 1 value among this (ship,lcl,fcl)
}

Здесь я хочу вызвать одну из этих функций на основе этого значения containerType. Например:

Если я получу значение типа как ship, тогда оно должно быть

searchShip(searchData).then((response) => {
  console.log(response)
})

Если я получу значение типа как lcl, тогда оно должно быть

searchLcl(searchData).then((response) => {
  console.log(response)
})

Если я получу значение типа как fcl, тогда оно должно быть

searchFcl(searchData).then((response) => {
  console.log(response)
})

Есть ли хороший способ вызвать эту функцию поиска по условию этого типа без оператора if else, потому что внутри него есть очень длительный процесс обработки ответа.

см. дубликат, он почти точен. (создайте объект с вашими именами функций в качестве свойств и получите к ним доступ по мере необходимости)

pilchard 09.04.2022 12:41
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
0
1
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, вы можете определить объект со структурой {[key]: function}.

const handlersByType = {
  ship: searchShip,
  lcl: searchLcl,
  fcl: searchFcl.
};

handlersByType[type](searchData).then((response) => {
  console.log(response)
})

Не забудьте проверить, существует ли handlersByType[type] или действительно является функцией. Для этого вы можете использовать необязательную цепочку.

Yousaf 09.04.2022 12:45

Другие вопросы по теме