Задать вопрос

Как создать сигнал в классе javascript?

Здравствуйте, уважаемые :)
Суть вопроса такова: хочу создать класс, который будет посылать некоторые сигналы (как, например, класс XMLHttpRequest())
Погуглив, я не нашел ничего вразумительного на тему сигналов в js 0_о как так?

Как я это вижу:
есть класс TTCache():
function TTCache() {}
у класса есть метод:
TTCache.prototype.check = function(value)
{
   /* ... */
}


Некоторая функция создает экземпляр класса и вызывает его метод:
myfunction() {
  var ttcache = new TTCache()
  ttcache.check(myVariable)
}


Метод check() соединяется с удаленным сервером и получает данные, это занимает некоторое время, поэтому мне нужно чтобы мой класс TTCache послал сигнал о том, что данные загружены или не загружены, например это должно было бы выглядеть так:
myfunction() {
  var ttcache = new TTCache()
  ttcache.onready() = function {
    /* продолжаем работать */
  }
  ttcache.check(myVariable)
}


Фактически нужно повторить модель класса XMLHttpRequest(), как это сделать? :)
  • Вопрос задан
  • 3135 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@wxmaper Автор вопроса
Всё оказалось намного проще чем я себе представлял =)
function TTCache(){}

TTCache.prototype = {
    check : function() {
        /* ... */
        this.onReady()
    },
    onReady : function(){}
}

myfunction() {
  var ttcache = new TTCache();

  ttcache.onReady = function {
    /* продолжаем работать */
  }

  ttcache.check();
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
trueClearThinker
@trueClearThinker
Отложенное выполнение, называется callback. Если вы искали именно его, то у вас ошибка в объявлении. Должно быть так:
myfunction() {
  var ttcache = new TTCache();
  ttcache.onready = function {
    /* продолжаем работать */
  }
  ttcache.check(myVariable);
}
Ответ написан
zolt85
@zolt85
Программист
Могу ошибиться, но мне кажется, что вам нужно использовать Deferred объект, который меняет свое состояние.
Вот дока
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы