有条件地延迟功能执行
Conditionally delay function execution
在前端JavaScript中,我有一个函数funcA
,它通常在客户端收到特定消息A
时立即执行。
服务器可能会在发送A
之前发送另一条消息B
。当这种情况发生时,客户端将收到两条消息:首先是B
,然后是A
,并且在funcA
之前将执行不同的函数funcB
(由B
触发)。
现在,如果funcB
首先执行,是否有一种优雅的方法可以在接收到A
时延迟执行funcA
?
下面的一些伪代码来说明这个想法:
...
// 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
之前使用"flag"和条件检查的组合,这对我来说似乎不是很优雅
请注意:这个问题不是关于如何延迟函数的执行(通常通过使用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网站在开放的Chrome浏览器上执行功能
- 如果在编辑中下拉值发生变化,如何执行功能
- 在周一上午8点至晚上7点之间执行功能
- 如何在ng中继器运行中执行功能
- 具有onclick功能的自定义复选框在实际切换复选框之前执行功能
- 基于条件执行功能
- 如何让chrome扩展在页面加载的后台执行功能
- 并行执行功能并等待其完成
- 必须点击两次按钮才能执行功能
- 在可过滤的剑道移动搜索框中键入时执行功能
- 故意暂停执行功能
- 当用户导航到特定部分时执行功能(地理位置)
- 必须单击按钮两次才能执行功能 - jQuery
- 在使用 react 和 material-ui 动态创建菜单项时,为什么 onTouchStart 会自动执行功能
- 如何在jQuery中单击两个按钮之一时执行功能
- 鼠标事件触发但未执行功能
- 如何在jquery中空闲10秒后执行功能
- 在Facebook分享后执行功能
- 如果文本框有焦点,按下特定键时执行功能
- 选择随机选项并执行功能