gpt4 book ai didi

javascript - 我的 `$.when` block 内的代码未使用 jQuery 触发

转载 作者:行者123 更新时间:2023-12-03 06:12:30 24 4
gpt4 key购买 nike

我试图在 jQuery 中使用 $.when(some function).then(some function) 来强制回调函数等待 $.when()< 中的代码 首先完成。

这是我的函数。

function activateFirstTab(callback) {

console.log('started activateFirstTab');
console.log('Total groups found: '+ $('.functionParameterGroup').length);

$.when(function () {

$('.functionParameterGroup').each(function () {
//Activate the first tab "which is the default"

var first = $(this).find('ul > li:first');

first.addClass('active');

var contentId = first.data('contentid');

$(contentId).addClass('in active');

console.log('finished when logic in activateFirstTab');

});

}).then(function () {

// Make sure the callback is a function​
if (typeof callback === "function") {
// Call it, since we have confirmed it is callable​
callback();
}

});


console.log('finished activateFirstTab');

}

在控制台中我收到以下消息

started activateFirstTab
Total groups found: 2
finished activateFirstTab

但我从未从 $.when() 内的 block 中收到消息

我期望输出是这样的

started activateFirstTab
Total groups found: 2
finished when logic in activateFirstTab
finished when logic in activateFirstTab
finished activateFirstTab

为什么$.when()里面的代码没有被执行?

如何让它执行?我犯了什么错误?

最佳答案

您不要在 $.when() 中调用该函数,还要注意传递给 $.when() 的匿名函数不会返回 Promise;尽管任何类型的参数都可以传递给 $.when()

function fn(callback) {
$.when(function dfd(callback) {
$.each([1, 2, 3], function(i, value) {
console.log(value)
});
return "dfd complete"
}() /* invoke `dfd` function */ )
.then(function(data) {
// Make sure the callback is a function​
if (typeof callback === "function") {
// Call it, since we have confirmed it is callable​
callback(data);
}
})
}

fn(function(args) {
alert(args)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于javascript - 我的 `$.when` block 内的代码未使用 jQuery 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39256005/

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