Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.07.2018, 10:51
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Можно ли запомнить предыдущее значение массива без сохранения в переменную?
Добрый день, допусти я получаю объект в виде числа:
var data = {number:1};

Я обновляю информацию об объекте методом setInterval;
function getData(){
$.getJSON('getData', function(data) {
       //data = {number:1}
}); 
}

setInterval(function() {
   getData(); 
}, 1000);


Теперь вопрос, можно ли не сохраняя информацию в отдельную переменную узнавать изменилось ли число в объекте?

Для пояснения вопроса, сейчас для понимания изменилось ли значение в объекте, я делаю так:
var data1 = [];
function getData(){
$.getJSON('getData', function(data) {
       setTimeout (function() {              
         data1 = data[0].number;
      },1000);
      if(data[0].number != data1[0]){
         //значит значение изменилось
      }
}); 
}

setInterval(function() {
   getData(); 
}, 2000);


То есть прост записываю это же значение в другую переменную секундой позже.
Ответить с цитированием
  #2 (permalink)  
Старый 13.07.2018, 11:14
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от Artur_Hopf
можно ли не сохраняя информацию в отдельную переменную узнавать изменилось ли число в объекте?
Можно прямо в этом объекте записать сам факт изменения... Или сохранить старое значение...
Ответить с цитированием
  #3 (permalink)  
Старый 13.07.2018, 11:21
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

ksa,
А как отследить чтобы записать сам факт изменения?
Ответить с цитированием
  #4 (permalink)  
Старый 13.07.2018, 11:34
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Artur_Hopf, можно установить сеттер на свойство или свойства.
У Object'а есть экспериментальный метод "observe", его теоретически тоже можно использовать.
Ответить с цитированием
  #5 (permalink)  
Старый 13.07.2018, 11:49
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Nexus,
Думаю оставлю все как есть, нормально отрабатывает =)
Ответить с цитированием
  #6 (permalink)  
Старый 14.07.2018, 00:37
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Сообщение от Artur_Hopf Посмотреть сообщение
То есть прост записываю это же значение в другую переменную секундой позже.
Что это за изврат с таймаутом? Можно проще и надёжней:
var data1 = [];
function getData(){
$.getJSON('getData', function(data) {
      if(data[0].number != data1[0]){
         //значит значение изменилось
*!*
         data1 = data[0].number; // раз изменилось, значит сохраняем новое значение
*/!*
      }
}); 
}
Ответить с цитированием
  #7 (permalink)  
Старый 16.07.2018, 08:06
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Белый шум,
Без таймаута эти значения всегда будут равны =)
Ответить с цитированием
  #8 (permalink)  
Старый 16.07.2018, 08:29
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

var b={number:1};
	setInterval(function(){
		var a = {number:Math.floor(Math.random()*3)}; // меняем значение от 0 до 2
		console.log(a,b);
		console.log(a.number==b.number);
		b.number = a.number;
	},1000);


изучите внимательно конструкцию в b.number сохраняем значение a.number после проверок и манипуляций, за счет этого при следующем вызове b.number помнит пред идущее значение a.number
Ответить с цитированием
  #9 (permalink)  
Старый 17.07.2018, 10:19
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

j0hnik,
Хитро, постараюсь применить, спасибо
Ответить с цитированием
  #10 (permalink)  
Старый 17.07.2018, 10:50
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Nexus, observe вроде как выпилили уже.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выводить значение раньше переменных Гробовщик Общие вопросы Javascript 11 10.09.2013 08:42
Можно ли передать переменную ajax'om ? Vladislav Общие вопросы Javascript 2 18.02.2013 06:34
Подскажите как достать значение из асс. массива posta Серверные языки и технологии 7 25.11.2012 00:38
предыдущее значение select nikolski Элементы интерфейса 6 22.12.2011 14:15
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53