我認爲並行有兩種形式,第一種是異步,第二種是多線程,目的都是爲了實現並行,只不過異步和多線程都是手段而已 markdown
今天先說第一種,C#中都有異步方法,以下圖中的Socket就是我去發送數據,我就無論了我繼續作我下面的其餘事情,若是我發送的數據獲得了系統的回覆,那麼會自動觸發SendCallback這個函數,咱們在js中看看怎麼理解什麼叫「系統會自動觸發委託的異步過程」這句話 網絡
JS DEMO多線程
1 <script> 2 //定義一個js類 3 var GameControl=(function(game){ 4 game.GameAlert= function(){ 5 alert('123'); 6 } 7 //保存分數 8 game.saveResult= function(scroe,callback){ 9 //若是分數大於0了,調用傳遞進來的函數且給函數傳遞參數 10 if (scroe > 98) { 11 if (typeof callback === "function") { 12 callback({ "status": true, "message": "" }); 13 } 14 return; 15 } 16 } 17 return game; 18 })(GameControl || {}); 19 20 //保存遊戲分數方法 21 var saveGameResult = function (score) { 22 var alertGameEnd = function(data) 23 { 24 if (data.status == true) { 25 alert('遊戲結束了'); 26 } 27 else { 28 alert('遊戲未結束'); 29 } 30 } 31 //若是分數大於0了,調用GameControl類裏面的saveResult方法去保存遊戲分數,注意第二個參數是把方法傳遞進去了 32 if (score > 0) { 33 GameControl.saveResult(score, alertGameEnd); 34 } 35 } 36 37 //調用保存遊戲分數方法 38 saveGameResult(99); 39 </script>
跟上面的C#中的SendCallback相似,js 中先委託一個alertGameEnd方法,當知足必定條件時,就會調用alertGameEnd方法,就跟自動觸發SendCallback同樣閉包