gpt4 book ai didi

javascript:将函数作为参数传递给另一个函数,代码以另一种顺序调用,然后我期望

转载 作者:行者123 更新时间:2023-12-03 21:45:27 25 4
gpt4 key购买 nike

我想将一个函数作为参数传递给另一个函数。

我想这样做,因为后一个函数调用异步 Jquery 方法,并且在返回结果之后,我想要执行一些 javascript 代码。

因为这个函数是从多个地方调用的,所以我希望将要执行的代码(在执行异步 Jquery 代码之后)传递到函数中。说得通?我希望:)

现在看到的是代码执行的顺序不是我想要的。我已将代码简化为以下代码:

$('#AddThirdParty').click(function() {
var func = new function() {
alert('1');
alert('2');
alert('3');
}
alert('4');
LoadHtml(func);
alert('5');
});
function LoadHtml(funcToExecute) {
//load some async content
funcToExecute;
}

现在我想要实现的(或者至少是我认为会发生的)是alert4将触发,然后loadhtml将触发alert1、alert2和alert3,然后代码将返回到alert5。

但是发生的情况是:alert1、alert2、alert3、alert4、alert5。

有谁知道我做错了什么以及为什么这是代码执行的顺序?

看起来当我定义new function()时alert1..alert3被执行,但是为什么当我从LoadHtml调用它时它也没有被执行 函数?

最佳答案

$('#AddThirdParty').click(function() {
var func = function() { // NOTE: no "new"
alert('1');
alert('2');
alert('3');
}
alert('4');
LoadHtml(func);
alert('5');
});
function LoadHtml(funcToExecute) {
//load some async content
funcToExecute(); // NOTE: parentheses
}

两个错误:匿名函数的语法不包含关键字new; JavaScript 需要在函数调用时使用括号,即使函数不带任何参数。当您只是说 funcToExecute 时,这只是一个在没有任何内容使用该值的上下文中给出其值的变量(有点像将 3; 写为语句)。

您可能会注意到,您已经知道如何使用匿名函数:您没有编写 $('#AddThirdParty').click(new function() ...);

关于javascript:将函数作为参数传递给另一个函数,代码以另一种顺序调用,然后我期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6014385/

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