2016-07-21 2 views
0

나는 전역 변수를 가지고 있습니다. window.remote.storageData은 실행중인 스크립트에서 채워집니다. 그러나 어떤 경우에는 명시 적으로 정의되지 않습니다. 이런 경우에는 기능을 다시로드하기 위해 기능을 트리거하려고합니다. 나는 이것에 대한 setInterval을 사용 : var에이 타이머의 범위에서 정의되지 않은 될 경우전역 변수가 정의되지 않은 경우 즉시 함수를 트리거

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

그러나, 나는 내 코드에서 오류를 얻었다. 작은 타이머 간격이 내 응용 프로그램에 걸렸습니다. 타이머가 500 미만인 솔루션이 제대로 작동하지 않습니다.

변수 값이 변경되면 즉시 기능을 트리거하는 방법이 있습니까?

+0

또는 세터/게터 –

+0

예, 그것은 세터라고 : [MDN - Defining_getters_and_setters] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters) – Thomas

답변

3

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 개체를 대체 할 수 있습니다. 이 경우 remote 속성을 window에 사용자 정의 가져 오기/설정과 함께 정의해야합니다.

+0

감사합니다, 그게 내가 원하는 걸 – AlexBerd

관련 문제