У меня есть API (LoadFileApi.load) для файла загрузки, который вызывает обратный вызов при завершении. Существует общая логика (подготовка) и два разных способа обработки (запущены обработчиками кликов), которые запускаются при подготовке. Интересно, как сделать это понятным и удобным, JS способом?Лучший способ чередования действий после обратного вызова в JavaScript
function loadFile (onCompleteFileLoad) {
LoadFileApi.load({
url: 'url',
onComplete: filePreparing
});
}
function fileProcessing1() {
}
function fileProcessing2() {
}
// common logic
function filePreparing(file) {
// prepare
...
// after prepare I need to run file processing routine corresponding to each handler
}
function clickHandlerA() {
loadFile(filePreparing);
// needs to trigger fileProcessing1
}
function clickHandlerB() {
loadFile(filePreparing);
// needs to trigger fileProcessing2
}
Простым решением является объявление общей переменной и установка ее в каждом обработчике перед загрузкой файла.
function filePreparing(file) {
// prepare
...
if (processingMethod == 1) {
fileProcessing1();
} else {
fileProcessing2();
}
}
function clickHandlerA() {
processingMethod = 1;
loadFile(filePreparing);
}
function clickHandlerB() {
processingMethod = 2;
loadFile(filePreparing);
}
var processingMethod;
Но мне кажется, что более элегантный способ JS должен существовать ... Было бы здорово, если в PREPARE не будет установлен условный выбор функции обработки. Он должен быть передан в качестве параметра как-то ...
Вы должны смотреть на ASync Lib http://caolan.github.io/async/ – hpfs