cps是callback使用上的特例,形式上就是在函數最後呼叫callback,這樣就好像把函數執行後把結果交給callback繼續運行,所以稱作continuation-passing style。利用cps,可以在非同步執行的情況下,透過傳給callback的這個cps callback來獲知callback執行完畢,或是取得執行結果。例如: <html> <body> <div id="panel" style="visibility:hidden"></div> </body> </html> <script> var request = new XMLHttpRequest(); request.open('GET', 'test749.txt?timestamp='+new Date().getTime(), true); request.addEventListener('readystatechange', function(next){ return function() { if(this.readyState===4&&this.status===200) { next(this.responseText);//<==傳入的cps callback在動作完成時執行並取得結果進一步處理 } }; }(function(str){//<==這個匿名函數就是cps callback document.getElementById('panel').innerHTML=str; document.getElementById('panel').style.visibility = 'visible'; }), false); request.send(); </script> 進一步的應用,也可以參考2-6 流程控制。 |
NodeJS 開發大全 > 2. Javascript 與nodeJS >