Цитата:
Сообщение от terbooter
А если делать вызов без респондера?
Подвисает в памяти объект __server ?
|
Забыл я чего-то про эту темку...
В памяти подвисают экземпляры этого класса.
Если без респондера, то как отписываться от событий?
Решил вопрос способом, который мне не очень нравится, но работает.
Перед звонком на сервер, по таймауту вызываю функцию, которая отписывается от события, которое ждет ответа сервера и далее уже либо звоним еще раз, либо выдаем сообщение, что сервер не отвечает, если же сервер благополучно ответил очищаем установленный таймут.
Хоть и убил двух зайцев: нет ликов и есть обработка ошибок/недоступности сервера, мне не нравится подход тем, что нельзя избавиться от лика, без обработки ошибки/недоступности сервера. Вот, т.е хотелось бы, чтобы эту функцию брал не себя не способный ни на что в данном случае подлец респондер, а не писать к нему заплатки.
Добавлено через 11 минут
Только что осенило, что малость протупил:
Диспатчим наверх событие об ошибке сервера, либо по таймауту, либо по сработавшей errorHandler, а наверху подписавшись на это событие отписываемся от всего, чего нужно. Тогда не придется обрабатывать ошибку/недоступность в каждом случае таймаутом при работе с экземпляром, т.к. это будет внутри класса и таким образом наверху я так же смогу отписаться от события ожидающего ответа сервера и ликов это вызывать не будет. Ведь именно из-за этого события экземпляр оставался в памяти.
А респондер получается отрабатывает как нужно, если ошибка на сервере. Но вот если он вобще не отвечает... юзать таймаут внутри.
Сколько воды утекло, до сих пор юзаю этот класс с кривыми заплатками, а только сейчас осенило этой, удивляющей своей простотой, мыслью.