Показать сообщение отдельно
  #2 (permalink)  
Старый 08.03.2017, 19:18
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Я так и не понял: если некоторое сообщение отправилось неудачно (например, интернет сбойнул или ошибка на сервере), то что делать? Пытаться снова отправить с тем же номером? Или забить на него, а тот-же номер использовать для следующего сообщения?

Если второе, то вот набросок с промисами. Я рекомендую стандартные промисы вместо всяких дефередов.

var promise = Promise.resolve(startMsgId);

function send(msg) {
  var oldId;
  promise = promise.then(function (id) {
    return sendToServer(oldId = id, msg);
  }).catch(function (err) {
    return oldId;
  });
}


Предполагается, что sendToServer возвращает промис, который зарезолвится новым id. А если зареджектится, то возвращаем oldId - тот, каторый использовали для запроса.
Ответить с цитированием