【发布时间】:2019-11-14 16:09:12
【问题描述】:
我遇到了一个让我疯狂 10 天的问题...基本上我有一个可以触发的函数(handleText),我想在运行第二个函数之前等待该函数结束( handleBackground)。
我尝试过 deferred 和 promise,但我认为我不太了解它们,因为我无法让它按照我想要的方式工作。
function handleText(){
//BLAST INIT
var blastedwords = $('.baselineHeader').blast({
delimiter: 'word',
});
//SHUFFLE ORDER IN ARRAY
blastedwords = shuffleAds( blastedwords);
function shuffleAds(arr){
for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x);
return arr;
}
//ADD CLASS TO SPAN CREATED WITH BLAST WITH A RANDOM DELAY
blastedwords.each(function(index) {
var min = 45, max = 100;
var delay = Math.floor(Math.random() * (max - min) + min);
var that = $(this);
var t = setTimeout(function() {
$(that).addClass("test");
}, delay * index);
});
}
function handleBackground(){
$('.baselineHeader').addClass('processed');
}
handleText();
handleBackground();
现在,handleText start 和 handleBackground(我想在第一个函数完成后运行的第二个函数)同时触发,而不是等待 handleText 完成。
我希望handleText 运行并等待每个循环为使用blast.js 创建的每个跨度提供类,然后再运行handleBackground。
有人可以帮我解决这个问题吗? 祝大家有美好的一天:)
【问题讨论】:
-
在
setTimeout()回调中调用handleBackground()。
标签: javascript jquery each jquery-deferred deferred