gpt4 book ai didi

javascript - 如何在特定情况下正确进行回调?

转载 作者:行者123 更新时间:2023-12-03 11:33:44 25 4
gpt4 key购买 nike

我有下一个目标:

我想要两个函数 - Start() 和 End()。第一个函数在 MyFunc() 开始时运行,第二个函数在 MyFunc() 结束时运行。当 Start() 未完成时,End() 不应运行。

现在我编写了下一个代码:

function MyFunc(OnMyFuncReady) {
Start();
// do something
OnMyFuncReady();
}

function Start() {
// start specific actions
}

function End() {
// end specific actions
}

MyFunc(function() {
End();
});

但是 Start() 相对于 End() 是异步运行的。我该如何解决这个问题?

更新1:我检查了函数运行的顺序,发现一切正常,但在 Start() 中我使用异步运行的 jQuery 动画函数...

更新2:现在我遇到了下一个问题:我想在 Start() (使用 jQuery animate() 的地方)和 MyFunc() 完成时运行 End() 。两个都。对我来说这是一项艰巨的任务。

最佳答案

我认为有两种方式:

首先等待,直到没有收到 Start() 的任何响应,然后继续。一切完成后,将 End 函数作为参数传递。不幸的是,您应该以某种方式分离开始/结束的行为。这背后的原因是您需要验证启动是否已完成。 End(释放)函数不应该出现这种问题。

第二种方法是创建一个带有值的变量。一旦指定了开始,您就会知道发生了什么。但是,如果您的启动因某种原因失败,您可能不想继续。 Start 完成后,为该变量分配 null 值。之后,您应该检查它是否为 NULL,并在最后传递释放函数。

Jerry Cain 的斯坦福类(class)就是一个很好的例子,请看这里:https://www.youtube.com/watch?v=Yr1YnOVG-4g&feature=PlayList&p=9D558D49CA734A02&index=6

希望对你有帮助。如果您有依赖项并使用资源,请欢呼并考虑同步方式。

关于javascript - 如何在特定情况下正确进行回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26624401/

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