我是新的(2天!!)JavaScript的世界,我唯一的編碼經驗是Java語言執行順序發生。 我明白,或者至少我已經讀過JavaScript是異步的,這意味着如果有一個語句需要很長時間才能執行,那麼執行下一條語句時不會阻止第一條語句的程序。 我遇到過回調(其實很多!!),但我看不出它們如何被用來確定執行順序。我寫了一段代碼只是爲了瞭解它是如何完成的,我當然可以使用一些幫助。如何在涉及異步調用時設置執行的特定順序?
console.log("Beginning");
function Test(callback){
setTimeout(function(callback){
console.log("Something that takes a lot of time");
},5000);
callback();
}
function tstCallBack(){
console.log("Should come last");
}
Test(tstCallBack);
我要的是輸出到顯示 -
Beginning
Something that takes a lot of time
Should come last
但我得到的輸出 -
Beginning
Should come last
Something that takes a lot of time
有什麼我可以做的就是在輸出我想要的方式?
「JavaScript是異步的,這意味着如果有一個聲明需要很長時間才能完成xecute,下一個語句執行時不會阻止第一個語句的程序。「這是錯誤的,javascript的異步陳述是真實的,但這不是因爲一個函數需要很長時間,線程會自動進一步跳轉,這取決於它是否是異步函數。 Btw Java在最近的版本中可以是異步的,但它不太常見。 –
@NexusDuck - 非常感謝你!這是我錯過的。也就是說(如果我錯了,糾正我),JavaScript具有這些內置功能,這些功能很容易導致/或者導致延遲,並且這些功能是異步的以避免問題;這意味着我們無法自定義製作我們自己的異步函數(不依賴於內置的東西) 我是對的嗎? – Savvy
你是對的,看看@ jfriend00的回答,他有一個更詳細的版本(重要的一點是,JavaScript具有更異步的本質,因爲它是單線程的,而Java可以是多線程的) –