gpt4 book ai didi

javascript - 在 JavaScript 中回调后交替操作的更好方法

转载 作者:行者123 更新时间:2023-11-28 05:31:28 25 4
gpt4 key购买 nike

我有一些用于加载文件的 API (LoadFileApi.load),可以在完成时触发回调。有通用逻辑(准备)和在准备时触发的两种不同的处理方式(由单击处理程序触发)。我想知道,如何用JS的方式让它变得清晰、方便?

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处理方法;

但在我看来应该存在更优雅的JS方式...如果PREPARE中没有条件选择处理函数就太好了。它应该以某种方式作为参数传递...

最佳答案

我相信您想要类似于此问题的答案 - JavaScript: Passing parameters to a callback function

使用上面链接中答案中描述的模式,您将发现您可以简单地将参数传递到回调中。

类似于:

function clickHandlerB() {
loadFile(filePreparing, fileProcessing1);

}

无需传递字符串标志来指示要调用哪个函数,只需传递函数本身。 filePreparing 函数的签名需要更新以包含回调函数

function filePreparing(file, callback)

关于javascript - 在 JavaScript 中回调后交替操作的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39669284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com