一,
js檔案
// log輸出函式
// log檔案
呼叫bat檔案
cscript.exe test.js
pause
結果是:aa只輸出了一次自從自從bb開始輸出之後就再也不輸出了;將_consolewrite("bb");去掉之後aa仍然只是輸出一次.
二,
js檔案
// log輸出函式
function _writelog(str)
// 資訊輸出函式
// log檔案
呼叫bat檔案與上面相同
結果是:aa在bb之間進行了輸出;將wscript.sleep()引數改為0,結果便又與例1中的相同了,證明不是因為多了
wscript.sleep
這一條語句而使事件可以執行,而是因為sleep了一段時間導致事件可以執行的 aa
bbbb
bbbb
bbbb
bbbb
bbbb
bbbb
bbbb
bbbb
bbbb
bbbb
bbbb
bbbb
bbbb
bbaa
bbbb
bbbb
bbbb
aabb
aa三,
js檔案
// log輸出函式
function _writelog(str)
// 資訊輸出函式
// log檔案
bat檔案與例1相同
結果為:aa,網頁事件還沒來得及執行,程式本身已經結束了.
一般情況下這種結果不會是我們所想要的結果,我們當然希望在網頁載入完畢之後對網頁做處理.要實現這個則必須要在網頁載入完畢前提供延時供事件使用.
通過以上比較可知,wscript中繫結事件的執行機制:
首先將wscript看做乙個cpu,它本身就是單執行緒的,只是在空閒時間會去掃瞄事件標識執行繫結函式.而這個空閒時間就是我們在呼叫wscript.sleep()的時間
所以雖然wscript的確是支援時間繫結的,當wscript中繫結事件的執行有時間是不能保證正確性的.
本例中則最好設定xmlhttp為同步,或通過對m_http狀態輪詢來實現,而避免使用事件繫結.
microsoft windows 指令碼技術chm幫助檔案原文:
sleep 方法執行時指令碼的執行緒被掛起,釋放它所占用的 cpu。超過指定的時間間隔後,指令碼繼續執行。如果您執行非同步操作和多過程,或者您的指令碼中包括由事件觸發的**,sleep 方法就尤其有用。要由事件觸發指令碼,則指令碼必須始終處於活動狀態(已執行完的指令碼肯定檢測不到事件)。指令碼所處理的事件仍將在休眠階段執行。
js中的事件機制及事件
1.事件 js和html之間的互動是通過事件來實現的。事件描述的是文件或瀏覽器特定的互動瞬間。2.事件流 描述的是從頁面中接收事件的順序。包括 ie事件冒泡流和netscape事件捕獲流。事件冒泡流是指從最具體節點出發依次往上走到較不具體的節點。事件捕獲流是指從較不太確定的節點出發到最具體的節點。d...
QT中的事件機制
什麼是自發事件?哪些型別的事件可以被propagated 或compressed?posting and sending 事件之間有何不同?什麼時候應該呼叫 accept 或是ignore 如果這些問題你還不是很了解,那麼繼續看下去。事件起源 定製事件型別 到現在為至,我們所說的內容不僅僅適用於ke...
Qt中的事件機制
什麼是自發事件?哪些型別的事件可以被propagated 或compressed?posting and sending 事件之間有何不同?什麼時候應該呼叫 accept 或是ignore 如果這些問題你還不是很了解,那麼繼續看下去。事件起源 定製事件型別 到現在為至,我們所說的內容不僅僅適用於ke...