close
這個問題相信困擾許多JS的開發者,
因為普遍認為JS的執行緒為單一Browser,
故在撰寫JS時常常會放心地不考慮多執行緒的問題,
但卻常常會有意想不到的問題出現,
問題總是摸不著頭緒。
的確,若以技術的角度來看,Javascript的確是單執行緒,
因為他依附在單一Browser運算下,
但我們卻忘了,User卻是造成JS的另一個執行緒,甚至是多執行緒,
對,User就是一個多執行緒,
但是為何使得JS單執行緒的架構因為User的操作而造成多執行緒的假象呢?
因為AJAX,因為asynchronous 設計的盛行,
這中間Client到Server有了一個wait的動作,
但Client在wait的同時,還是可以作其他的動作,
這就是非同步的方便但也是困擾,
例如
上面這張圖,當開發者認為,如果CheckBox被打勾了,
就執行ajax,然後等到server回應後,client端在依回應之內容進行改變,
但是如果這時使用者在client wait的時間內,uncheck box後,
就會造成程式設計上的錯亂,雖然這是設計者邏輯設計的問題,
但是因為wait的巧妙運用,卻可造就一種假象的多執行緒結果,
所以在使用AJAX的當下,應詳細考慮周全這的問題,
雖可用Set CheckBox Disable的方式檔掉User這個執行緒來確保JS邏輯上單執行緒的設計,
但是若能發揮這樣的特色,開發出JS眾人認為所不能為之事,不是更高人一等。
全站熱搜
留言列表