Hallo,
ich bin neu hier und entschuldige mich schon mal falls dies eine blöde Frage ist, aber ich versuche schon seit Stunden dies zu lösen.
Ich habe 2 Funktionen mit Ajax Calls (im Moment nur Test Actions - später sollen sie dann von einander abhängen). Funktion 1 hat einen Callback auf sich selbst mit 2ms, Funktion 2 braucht 10s bis sie fertig ist.
Ist das nicht gegen die "asynchron Theorie" von Ajax? Sollte es nicht möglich sein, dass beide Funktionen zur selben Zeit ablaufen?
Hier mein jQuery:
Und hier meine controller actions:
ich bin neu hier und entschuldige mich schon mal falls dies eine blöde Frage ist, aber ich versuche schon seit Stunden dies zu lösen.
Ich habe 2 Funktionen mit Ajax Calls (im Moment nur Test Actions - später sollen sie dann von einander abhängen). Funktion 1 hat einen Callback auf sich selbst mit 2ms, Funktion 2 braucht 10s bis sie fertig ist.
- beider Funktionen funktionieren selbststäbdig
- Sobald Funktion 2 gestartet is wird der Aufruf von 1 solange geblockt bis 2 fertig ist.
Ist das nicht gegen die "asynchron Theorie" von Ajax? Sollte es nicht möglich sein, dass beide Funktionen zur selben Zeit ablaufen?
Hier mein jQuery:
HTML:
<script type="text/javascript">
$('#tbut').click(function(){
// Declare variables
var go1 = true;
var go2 = true;
var z = 1;
// Fire 1st Ajax call
a();
// 1st function with callback
function a() {
$.ajax({
url: 't2'
})
.always(function() {
console.log('t2 always');
$('#tdiv').html(z); // update DIV
z = z + 1;
if (go1) {
if (go2) {
b();
}
setTimeout(function(){a()},2); // callback
}
});
};
// 2nd function
function b() {
go2 = false;
$.ajax ({
url: 't1'
})
.done(function() {
console.log('fin');
$('#tdiv').html('fin'); // update DIV
go1 = false;
});
};
return false;
});
</script>
<button id="tbut">do something...</button>
<div id="tdiv">now</div>
Und hier meine controller actions:
PHP:
public function actionT1() {
// make it take a little longer...
$i=0;
while ($i < 10) {
$i++;
sleep(1);
}
exit;
}
public function actionT2() {
// do nothing here at the moment...
exit;
}
Zuletzt bearbeitet: