Dve funkcie synchronne bežia v jquery - jquery, image, function, setinterval, synchronize

Napísal som scenár, ktorý simuluje prechod obrázkov a spôsobí zmenu textu. Toto je kód teraz:

var teller = 0;
var html = new Array();
var link = new Array();
html[0] = "Some text";
link[0] = "link1.html";
html[1] = "Some other text";
link[1] = "link2.html";
function beeldwissel() {
tekstwissel();
var $actief = $("#overvloeier IMG.actief");
if ( $actief.length == 0 ) $actief = $("#overvloeier IMG:last");
var $next =  $actief.next().length ? $actief.next() : $("#overvloeier IMG:first");
$actief.addClass("laatst-actief");
$next.css({opacity: 0.0})
.addClass("actief")
.animate({opacity: 1.0}, 1000, function() {
$actief.removeClass("actief laatst-actief");});
}

$(function() {setInterval( "beeldwissel()", 5000 );}); // 5000 = pauze van 5 seconden

function tekstwissel() {
teller++;
if (teller >= html.length) {
teller = 0;
}
document.getElementById("tel").value = teller;
document.getElementById("tekst").innerHTML = html[teller];
}

function doLink() {
var tel = document.getElementById("tel").value;
window.open(link[tel],"_blank");
}

Ak zmením zaostrenie než zmena textu a zmena obrázka už nie je synchronizovaná ...

Čo musím zmeniť, aby som sa vyhol tomuto problému?

odpovede:

0 pre odpoveď č. 1

Tieto dve funkcie nemôžu bežať súčasne bez toho, aby boli asynchronné. Najlepšie, čo môžete urobiť, je použiť dva časové limity s veľmi málo nastaveným časom:

setTimeout(function() { /* code... */ },1);
setTimeout(function() { /* code... */ },1);

Týmto spôsobom sa obe funkcie vykonávajú súčasne.

Vo vašom prípade by však nebolo jednoduchšie, keby ste práve použili jednu funkciu alebo prvý zavolali na druhú:

function trigger() {
// Do image fading here...
// Text manipulation here...
}

Ponuka