@krll-k

Кроме как setInterval есть способы прослушивать изменилось ли свойство или нет?

var obj= {};
obj.compleate = false;

obj.interval = setInterval(()=>{
  if(obj.compleate === true) {
    doSomeThing();
    clearInterval(obj.interval)
  };
},1000);
spoiler
'use strict';

var search = {};

search.data = [];

search.compleate = false;

search.fromGroups = function(id,fields,offset) {
  if (offset == undefined) {
    offset = 0;
  }
  VK.call('groups.getMembers', {
    group_id: id,
    fields: fields,
    offset: offset
  })
  .then(response => {
      console.log("spet: " + offset/1000 + "/" + Math.ceil(response.count/1000));
      if(response.count <= offset) {
        return search.compleate = true;
      }
      if(response.count > 1000) {
         offset = offset + 1000;
         search.fromGroups(id,fields,offset)
      }
      return _.filter(response.items, items => {
         return items.online === 1
      })
   })
  .then(list => {
      return _.map(list, list => {
         return list.id
      })
   })
  .then(list => {
    console.log(_.flatten(search.data).length + " + " + list.length);
    search.data.push(list);
  })
  .catch(e => console.log(e))
}

search.fromGroups(22892776,'online',32000);

setInterval(()=>console.log(search.compleate),1000);
https://www.npmjs.com/package/node-vkapi
C:\Users\Общий\Desktop\vkpush>node iccup.js
spet: 32/38
0 + 91
false
spet: 33/38
91 + 71
false
spet: 34/38
162 + 94
false
false
spet: 35/38
256 + 79
spet: 36/38
335 + 88
false
spet: 37/38
423 + 46
false
spet: 38/38
469 + 0
true
true
true
true
true
true
^C
  • Вопрос задан
  • 240 просмотров
Решения вопроса 1
Смотри в сторону Object.defineProperties, Object.observer на хроме до 50 версии и Proxy от 50 версии
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
abyrkov
@abyrkov
JavaScripter
Какое свойство?
Но, наверно, можно методы доступа задать и все
Ответ написан
IonDen
@IonDen
JavaScript developer. IonDen.com
Нет нет, это делается не так. Есть две общепринятые технологии для этого, коллбэки и промисы. По сути они делают одно и тоже, выполняют какой-то код, после того, как завершилось какое-то другое асинхронное действие. Например коллбэк у аякс запроса выглядит так:
$.ajax({
    // do request,
    success: function (result) {
        // вот эта функция выполнится после завершения запроса
    }
});
Ответ написан
Комментировать
xPomaHx
@xPomaHx
1vs9
Сам не пробовал, но мб можно переопределить гетер на свой гетер который с начало вызывает стандартный, а потом свой колбэк, или если еще глубже то создать свое событие и вызывать его там.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы