Иногда на сервере у меня возникает ситуация, когда необходимо получить некоторые данные из объекта за время, когда оно изменяется другим фрагментом кода. Очень важно иметь актуальное состояние объекта во время просмотра объекта. Я решил эту проблему следующим образом:js, мониторинг состояния объекта
var Obj1={}
Obj1.actual=false;
//asynk part that modifies object
function modify_func(){
Obj1.actual=false;
//modifying operations
Obj1.actual=true;
}
//asynk part that gets object state
function view_func(){
if(Obj1.actual){
//operations
...
return;
}
//if not actual
var timer=setInterval(function(){
if(Obj1.actual){
//operations
...
clearInterval(timer)
}
},1000)
}
Эти две функции могут быть пробуждены в любое время. Однако, я действительно не думаю, что было бы неплохо использовать поле setInterval и actuality. Есть ли лучшее решение этой проблемы?
Я предлагаю вам внедрить прослушиватель событий для этого. Поэтому зарегистрируйте любой обратный вызов, который хочет узнать об изменениях, и вызовите эти обратные вызовы после внесения изменений. –
@GerardvanHelden, я не могу поместить view_func в cb, потому что он находится в отдельном обработчике запросов на сервере и может выполняться 1000 раз, тогда как modify_func только 10, например, или наоборот –