簡體   English   中英

是否有一種本地方法可以觸發事件觸發后附加的事件處理程序的事件?

[英]Is there a native approach to trigger an event for event-handlers attached after event had been fired?

如果您使用的是本機 Events api 而不是自己推出,那么即使事件已經觸發,您如何確保附加到事件的事件處理程序獲得該事件。 假設這個事件只觸發一次。

示例...您從某個 api 加載數據。 您的 UI 將事件附加到“dataLoaded”,通常獲取數據需要時間,並且在獲取完成之前附加事件處理程序。 然而,有時數據太小,獲取請求幾乎不需要時間,並且在獲取完成后 UI 附加事件偵聽器,因此錯過了它。

這只是一個例子,而不是實際用例..

我希望能夠為我的代碼提供事件,如果有人附加了一個事件,那么他們就會得到那個事件。

另一種思考方式是,你讓某人告訴我火車什么時候到,他回去了,火車已經到了,但他沒有告訴你。 當你問他為什么什么都不說時,他回答說火車已經到了,嚴格來說沒有火車在我之后到達。

==============

表達這個問題的另一種方式......

你有發布/訂閱系統。 即使有人在某個頻道上發布消息后訂閱了某些消息,您也希望傳遞某些消息。

Promise 為異步數據提供了方便的容器。 您可以根據需要多次調用.then()並且將始終保證接收解析的數據。

例如

 // Example async function function getData() { const data = { items: [1,2,3] } // Takes 200ms to resolve data return new Promise(res => setTimeout(res, 200, data)) } // Store the promise const dataLoaded = getData() // Here's an early listener, attached before resolving dataLoaded.then(data => { console.log("Early listener got:", data.items) }) // Wait and add another listener well after the data has resolved setTimeout(() => { dataLoaded.then(data => { console.log("Late listener got:", data.items) }) }, 1000)
 .as-console-wrapper { max-height: 100% !important; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM