JavaScript Sleep SetTimeout 非同步處理方法
Contents
最近有一個情境,同一頁使用者會有持續呼叫API方法,但需要控制按鈕等前一個API呼叫,減少併發發生狀況,這邊就找了方法排除,有找到使用 sleep
方法去解決這個問題。
重點絲路
因為重點很少,就不寫心智圖。
利用 Promise 裡面包住 setTimeout
方法去做呼叫,這邊外面可以用 Promise
去做非同步處理,可以用 await
搭配使用,這樣就可以等待時間到才開始執行下面程式。要等多的非同步可以用Promise.all
方法去搭配 await
去判斷。
sleep 非同步
透過 Promise 可以做到非同步處理。
|
|
模擬防止併發 AJAX 情境
透過 Promise 特性,使用全域變數抓 Promise 變數,前面加上 await
就能阻擋這個情境。執行 Run Ajax
Note: timeout 方法這邊模擬當作抓資料時間,實際可以用 axios
做替換。
|
|
Info
這邊使用情境是用一個 Promise ,這邊假如有多隻API要等的話可以用
Promise.all
,這邊以前不知道這個情境可以用在哪裡,經過這個情境大概知道要怎麼用。參考資料
彩蛋
javascript - How to make onclick event to work only once - Stack Overflow