2016-12-06 4 views
0

Я работаю над эмулятором. Задача под рукой - это входящий запрос на определенную конечную точку. Запрос может содержать 1-4 варианта в req.body.options. Основная идея дизайна заключается в том, что объект содержит параметры и соответствующие вызовы методов (как своего рода под-маршрутизатор).Метод вызова JS от значения объекта

let dataActions = { 
    option1: optionMethod(param1, param2), 
    option2: optionMethod2(param1, param2), 
    option3: optionMethod3(params), 
    option4: optionMethod4(params) 
} 

for (key in req.body.options) { 
... 
} 

для ... в должны сгореть методы (развязаны в других файлах), когда он находит соответствие в запросе с ключами dataActions. Есть ли семантический путь или подробный шаблон проектирования, чтобы сделать эту работу?

ответ

1

Проблема в том, что вы уже запускаете методы самостоятельно.

let dataActions = { 
    option1: optionMethod(param1, param2) // <-- this is a function call 
} 

делая это таким образом присваивание результата из optionMethod() в option1. Вышеуказанное является эффективным сокращением для

let dataActions = {}; 
dataActions.option1 = optionMethod(param1, param2); 

Если это помогает сделать его более очевидным.

Вы не хотите немедленно звонить методам. Вы хотите сохранить их для последующего использования. Либо хранить их непосредственно:

let dataActions = { 
    option1: optionMethod // <-- this is a function reference 
} 

... или сохранить функцию, которая вызывает их каким-то определенным образом:

let dataActions = { 
    option1: function() { 
     return optionMethod('some', 'parameters'); 
    } 
} 

теперь вы можете использовать их в отдельное время, например, как этот

Object.keys(dataActions).filter(a => a in req.body.options).forEach(a => { 
    var optionMethod = dataActions[a]; 
    optionMethod(); 
}); 
+1

Спасибо! Ты мне очень помог очистить туман в моей голове. По какой-то причине я пропустил тот факт, что я сохранил результат вызова функций как значения. Так снова, спасибо за вашу помощь! :) –

Смежные вопросы