Импортированы 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, потому что внутри него есть очень длительный процесс обработки ответа.
Да, вы можете определить объект со структурой {[key]: function}.
const handlersByType = {
ship: searchShip,
lcl: searchLcl,
fcl: searchFcl.
};
handlersByType[type](searchData).then((response) => {
console.log(response)
})
Не забудьте проверить, существует ли handlersByType[type]
или действительно является функцией. Для этого вы можете использовать необязательную цепочку.
см. дубликат, он почти точен. (создайте объект с вашими именами функций в качестве свойств и получите к ним доступ по мере необходимости)