jsコールバックを理解しようとしていたとき、私はこの問題に遭遇しました。 aa
の後に2500 ms
のアラートを出そうとしています。つまり、aaの値は解決されましたが、結果は1になりました。なぜですか? aa
はここでは定義されていませんが、b()は呼び出しスタックにあります。実際の値はaa
です。 私が間違っている場合は私を修正してください。JavaScriptのコールバックが非同期で動作しない
function a(b){
var aa = b();
setTimeout(function(){
alert(aa)
},3000)
}
function b() {
return setTimeout(function() {
return 'alert this value !';
},2500)
}
a(b);
'1'は、あなたの2番目の' setTimeout() 'へのタイマーリファレンスです。そのような 'setTimeout()'コールバックから値を返すことはできません。 – Sirko