今天遇到一個問題:
layer彈出一個confirm提示窗,然后confirm還沒有點擊對應的按鈕的時候,就已經執行了后續代碼,我這里做出的判斷是,是否需要進行后續操作,但是因為layer.confitm的非阻塞式的特性導致我這個控制失效,無法達到點擊確定或者取消的效果。
研究了幾個方法,都不怎么樣,有些方法是把后續操作全部放到回調函數里面去,但是這個操作影響到我目前的邏輯,對方法的封裝也不友好,所以就拋棄了。
后面自己谷歌到一個通過async關鍵字來實現阻塞式彈窗的方法:直接上圖
首先在你需要阻塞的方法的開始寫關鍵字async,
我這里是一個點擊事件,所以直接function上加上async關鍵字。
然后內部需要阻塞執行的方法前面需要加上await關鍵字,如圖:
這樣就可以讓代碼停在這個方法,需要注意的是,我這里的MrIsLocked()這個方法,在寫方法具體邏輯的時候,也需要加async關鍵字,
也就是聲明方法的時候,如圖:
簡單的來說,就是在彈窗的方法聲明時候加上async關鍵字,調用該方法的時候加上await關鍵字,就可以達到這個效果了。
如果有寫的不對的,還望大佬們斧正。