與大多數語言不同,js中無自帶sleep函式,但是可以通過promise與await實現。
製作sleep函式,首先要編寫乙個名為sleep的promise函式,promise函式在執行resolve的時候結束,所以如果在promise函式內部,將resolve包裹在定時器中,函式執行的時間就變得可控。
function sleep(interval) )
}
在vue中,該函式可直接定義在methods中。
上面講到,sleep是乙個執行時間可控的函式,但也是乙個非同步函式(詳查promise)。
如果把非同步函式直接放置在主函式中,是不會起到休眠主函式效果的。這時需要使用await,指明等待非同步完成後繼續執行。
async與await是es7中提供的處理非同步的方法,await必須在async中使用。
async function test()
}}
**效果為外層從第一層開始,等待內層輪完後外層切換下一層。
控制台
[work] 20:50:58 外層 1
[work] 20:50:58 外層 1 內層await 0
[work] 20:51:01 外層 1 內層await 1
[work] 20:51:04 外層 1 內層await 2
[work] 20:51:07 外層 1 內層await 3
[work] 20:51:10 外層 1 內層await 4
[work] 20:51:10 外層 2 at js/setinterval.js:12
[work] 20:51:10 外層 2 內層await 0
[work] 20:51:13 外層 2 內層await 1
[work] 20:51:16 外層 2 內層await 2
[work] 20:51:19 外層 2 內層await 3
promise函式可包含在普通方法中放在methods中,直接呼叫,也可將其放置在鉤子函式中直接使用
await需要包裹在async中,所以需要乙個async型別的function的外層包裹
async函式定義後不執行,需要跟隨呼叫函式,也可使用(function(){})()自呼叫
在vue中往往要對data做出修改,當希望對方法外部的this.data或者其他值做出修改時,可使用箭頭函式做this穿透,使函式內外this保持一致
形式:(引數列表)=>(函式體)
SOCKET無阻塞連線
socket無阻塞連線 下面的 實現socket 無阻塞 connect include int apientry shared connect nonb int skt,const struct sockaddr sa,int salen,int timeout ioctlsocket skt,f...
無阻塞套接字技術 講解 ZZ
標準的網路程式設計模式有乙個缺點,就是如果 socker 類的 i o 方法不能立即處理,i o 方法就會阻塞 block 阻塞是指程式停止執行,等待個特殊語句的完成。如當乙個程式執行到 receive 方法的時候,程式會停止執行,直到在套接字上讀到的資料為止。如果遠端裝置不傳送任何資料,程式就不能...
CLOS網路嚴格無阻塞條件證明
假設 clos網路構造如下 第一級為k個nxm的交換單元 第二級 中間級 為m個kxk個交換單元 第 為k個mxn個交換單元 對於某次請求從第一級的某個交換單元s的埠a輸入,從第 的某個交換單元q的埠b輸出。此時稱正在被s使用的第二級的交換單元的集合為t s 正在被q使用的第二級的交換單元的集合為t...