gpt4 book ai didi

JavaScript 回调在 Chrome 中运行不正常?

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

我试图在另一个函数完成后调用一个函数。通常,这是通过回调完成的,至少在 Node.js 中是这样。但是,当我尝试在 Chrome 中运行以下代码时,回调函数似乎在主函数之前执行。我的函数/回调写错了吗?第二个函数(回调函数)不应该只在第一个函数完成后执行吗?

如果当 JavaScript 在浏览器中客户端运行时回调不起作用,是否有其他方法可以确保第二个函数仅在第一个函数完成时运行?

<html>
<head></head>
<body>
<script>

function firstLoad(callback) {
console.log("firstLoad function fired.");
}

function secondLoad() {
console.log("secondLoad function fired.");
}

firstLoad(secondLoad());

</script>
</body>
</html>

在 Chrome 开发者工具控制台中,上面的代码给了我:

secondLoad function fired.

firstLoad function fired.

我希望情况正好相反。

最佳答案

我试图在这里给出一个更简单的答案,开门见山,我已经编辑了您的代码,以便它按照您期望的方式工作,并添加了一些注释来解释发生的情况:

<html>
<head></head>
<body>
<script>

function firstLoad(callback) { //secondLoad is "saved" in the callback variable
console.log("firstLoad function fired.");

//When Firstload is done with doing all it has to do you have to manually call
//the callback which references to the secondLoad function:
callback();
}

function secondLoad() {
console.log("secondLoad function fired.");
}

//Here you pass the secondLoad function as a parameter for the firstLoad function,
//in your code you were passing the *result* of secondLoad
firstLoad(secondLoad);

</script>
</body>
</html>

我假设firstLoad没有执行诸如网络请求之类的异步操作

关于JavaScript 回调在 Chrome 中运行不正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56980394/

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