gpt4 book ai didi

javascript - 有条件地延迟函数执行

转载 作者:行者123 更新时间:2023-12-02 18:27:29 27 4
gpt4 key购买 nike

在前端JavaScript中,我有一个函数funcA它通常在客户端收到特定消息后立即执行 A .

服务器可能会发送另一条消息 B 发送之前 A 。当这种情况发生时,客户端将收到两条消息:第一条B然后A ,以及一个不同的函数 funcB (由 B 触发)将在 funcA 之前执行.

现在,有没有一种优雅的方式来延迟 funcA 的执行收到后A ,如果funcB首先执行?

下面的一些伪代码来说明这个想法:

...

// called upon receiving msg `A`
// but need to delay its execution if receiving `B` and executing funcB first
function funcA(param) {
...
}

// called upon receiving msg `B`
function funcB(param) {
...
}

...

// receiving messages from server

var msg = JSON.parse(...);

if (msg.type === 'A') {
funcA(msg.data);
}
else if (msg.type === 'B') {
funcB(msg.data);
}
else if (msg.type === 'C') {
...
}

// deal with other types of message
...

我可以考虑在每次执行funcA之前结合使用“标志”和条件检查。 ,这对我来说似乎不太优雅。

请注意:这个问题不是关于如何延迟函数的执行(通常通过使用 setTimeout 来实现),而是要求给定一个设计模式/结构特定的代码逻辑。

最佳答案

您需要一种方法来跟踪 funcB 是否已被调用,然后您可以在 funcA 内部检查并让它延迟调用自身:

var funcBCalled = false;

function funcB() {
funcBCalled = true;
// do something...
}

function funcA() {
if (funcBCalled) {
funcBCalled = false;
window.setTimeout(funcA, 1000);
} else {
// do something
}
}

关于javascript - 有条件地延迟函数执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18208005/

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