Da ich versuchte, js Rückruf zu verstehen, stieß ich auf dieses Problem. Hier versuche ich zu alarmieren aa
nach 2500 ms
dh wenn Wert von aa gelöst ist, aber ich bekomme Ergebnis als 1. Warum? Ich denke, aa
ist hier nicht definiert, aber b() ist in Call-Stack. Es sollte tatsächlichen Wert von aa
auflösen. Bitte korrigieren Sie mich, wenn ich falsch liege.JavaScript Callbacks funktionieren nicht async Weise
function a(b){
var aa = b();
setTimeout(function(){
alert(aa)
},3000)
}
function b() {
return setTimeout(function() {
return 'alert this value !';
},2500)
}
a(b);
Das '1' ist die Timer-Referenz zu Ihrem zweiten' setTimeout() '. Sie können keinen Wert aus einem 'setTimeout()' Callback wie diesem zurückgeben. – Sirko