簡體   English   中英

如果全局變量未定義,立即觸發函數

[英]Immediately trigger function if Global var becomes undefined

我有全局變量,例如window.remote.storageData ,它在腳本運行時填充。 但是,在某些情況下,它變得明確未定義。 在那些情況下,我想觸發函數以重新加載它。 我為此使用setInterval:

setInterval(function(){...},timer);

但是,如果var在計時器范圍內變得不確定,則我的代碼會出錯。 微小的計時器間隙卡在了我的應用程序中,那些計時器少於500的解決方案無法正常工作。

有什么方法可以在更改變量值時立即觸發功能?

如果使用ES5瀏覽器,並且未凍結remote則可以使用自定義get / set定義屬性。

(function(remote) {
  var value = remote.storageData;

  try {
    Object.defineProperty(remote, 'storageData', {
       get: function() { return value;}

       set: function(newVal) {
         if(typeof newVal === 'undefined') {
            newVal = //some code to get value
         }

         value = newVal
       }
    })
  } catch(e) {
     console.log(e)
  }
}(window.remote))

但是某些代碼仍然可以替換整個window.remote對象。 在這種情況下,您需要使用window本身的自定義get / set定義remote屬性。

暫無
暫無

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

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