Wscript中的事件機制

2021-05-14 08:21:01 字數 2905 閱讀 6817

,

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...