一些觀察。某些原生javascript功能被阻止。如警示框。如果瀏覽器允許用戶編寫其他阻止功能,那麼它們不會比打破自己的頁面更惡意。所以我不認爲這是一個安全問題。爲什麼Javascript函數不能阻塞?
啓用阻塞功能可能會導致不良的設計模式。也許這個目標僅僅是爲了阻止草率的設計,因爲JavaScript絕對是異步的。但這是一種相當自以爲是的設計理念,可以融入語言本身。
問題: 是否有任何歷史或技術原因,爲什麼它不可能建立另一個功能?或者相反,我誤解了,有沒有辦法讓其他函數阻塞?
建議的設計模式。我認爲值得展示我的意思是一個阻塞函數。正常的設計模式是做:
doSomethingThatMayTakeTime();
function doSomethingThatMayTakeTime(){
//Something that takes time
callback();
}
function callback(){
//Do something you only want to do once the first function is complete
}
但也有我的代碼很多地方有沒有可能的代碼,我想直到doSomethingThatMayTakeTime函數執行被執行。在這種使用情況下,爲什麼我們可以說:
doSomethingThatMayTakeTime();
//NextLineOfCode
function doSomethingThatMayTakeTime(){
// Blocking Code -- Prevent execution of any code outside this function until this function returns/executes its last line
//Something that takes time
}
正如你可以在這個特定的使用情況下看到一個不會是瘋了思考,這是一個更簡潔的方法。雖然這看起來很具體,但我經常遇到這種情況。使用其他模式框替換警告框時會出現一個簡單的示例。
我想說的是,爲環境而設計的javascript幾乎總是可以執行的其他功能,即UI操作的事件處理程序。 – mrmcgreg
「我想要執行的代碼不存在」。你的代碼 - 也許。但瀏覽器同時運行了很多其他的JS。你的代碼__玩得很好。 –
[我可以在這裏詢問什麼主題?](https://stackoverflow.com/help/on-topic):「_但如果您的問題通常涵蓋**特定的編程問題**,或軟件算法或軟件工具通常使用的工具;是一個實用的,可回答的問題,它是軟件開發所特有的,然後你是在正確的地方提問你的問題!「) – Andreas