我有一些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中没有条件选择处理函数,那将会很棒。它应该作为参数以某种方式传递...
你应该看看,以异步LIB http://caolan.github.io/async/ – hpfs