[英]How to wait for Backbone event trigger to complete before executing next line of code
我有一種情況,我打開一個“連接到某事”窗口,然后做一個POST請求。
我這樣做的方式是:
GlobalEventBus.trigger("connection")
doPost()
現在發生的事情是:打開一個連接窗口,我希望用戶輸入憑據,然后在窗口打開后立即觸發POST請求。
我嘗試使用while循環檢查一個布爾變量以查看它是否已完成,但是即使在“連接”窗口打開之前,while循環也會被觸發。
我以前沒有UI或JavaScript的經驗。 我怎樣才能做到這一點?
您可以使用可選參數進行trigger
:
觸發
object.trigger(event, [*args])
觸發給定事件或空格分隔的事件列表的回調。 觸發器的后續參數將傳遞給事件回調。
所以你可以這樣做:
GlobalEventBus.trigger("connection", function() { doPost() });
// or
GlobalEventBus.trigger("connection", doPost);
然后'connection'
事件的監聽器將從其參數列表中獲取該函數並在適當的時候調用它。 您必須要小心,只有一個偵聽器調用傳遞的回調函數或修改回調函數,以便多次調用它只會導致一個doPost()
調用。
或者,您可以完全放棄'connection'
事件,轉而使用一個簡單的函數來連接必需的回調:
app.getConnectionAnd(function() { doPost() });
然后getConnectionAnd()
將建立對話框並將傳遞的函數附加到其“ok”回調。 如果您對它們有其他用途,您仍然可以觸發事件,但僅僅因為您擁有通用事件總線並不意味着您必須將它用於所有事情。
如果您真的喜歡Backbone事件,您可以修改您的應用程序,請避免此順序:
GlobalEventBus.trigger("connection");
doPost();
相反,您可以添加另一個觸發doPost
事件:
function() { doPost() }
全局可訪問的地方。 GlobalEventBus.trigger("connection")
。 GlobalEventBus.trigger('connected')
事件。 'connected'
事件會查找應該被調用的內容,注意它是來自(1)的函數,調用它,並將函數調用重置為undefined
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.