Pull to refresh

Comments 8

PinnedPinned comments

На использование такого подхода к отправке запросов меня натолкнула библиотека Redux-saga. Меня попросили в одном реакт проекте поправить кое-что и я там увидел использование yield при запросах. Не знаю правильно ли это было настроено, но один запрос там (в консоле) повторялся один за другим без остановки, т.к. ответ приходил не 200. Так вот, мне показалась интересной такая реализация и собственно так я и решил сделать в похожей манере отправку запросов с бэка. Хотя я не преследовал цель реализовать дизайн паттерн сага. Вот статья на хабре о redux-saga.

Есть ещё вариант авторизации, когда в заголовке передают зашифрованную строчку. И авторизация происходит по ней.

Зачем придумывать кучу раз как повторить запрос по условию, если можно использовать готовую библиотеку и прописать нужные условия для повторения?

Из примера по ссылке я не могу понять можно там реализовать аналогичное проведение, но у меня встречный вопрос: "почему в axios используется interceptors, а не эта библиотека?"

В любом случае спасибо за ссылку.

Жаль, это не пулл реквест, прокомментировал бы. В коде проблема есть почти на каждой строке.

буду рад если укажете на пару основных. Я всё же для такого и пишу, чтоб получать код ревью, а не просто минусы.

На использование такого подхода к отправке запросов меня натолкнула библиотека Redux-saga. Меня попросили в одном реакт проекте поправить кое-что и я там увидел использование yield при запросах. Не знаю правильно ли это было настроено, но один запрос там (в консоле) повторялся один за другим без остановки, т.к. ответ приходил не 200. Так вот, мне показалась интересной такая реализация и собственно так я и решил сделать в похожей манере отправку запросов с бэка. Хотя я не преследовал цель реализовать дизайн паттерн сага. Вот статья на хабре о redux-saga.

Каждый yield — это точка останова приложения. Т.е. этакий Command в CQS. А в сагах он лишь позволяет достигнув какой-то определённой точки иметь возможность откатить все изменения назад, воспроизведя команды в обратном порядке (с их компенcацией):


try {
  yield сделать_заказ->otherwise(отменить_заказ);
  yield списать_деньги->otherwise(начислить_деньги);
  yield доставить_заказ;
} catch(Throwable) {
  // Воспроизвести всё взад
}

В запросах оно имеет смысл лишь когда есть задача отменить запрос в случае ошибки и вернуть всё взад.

Спасибо. Интересно узнать это.

В redux-saga только один yield используется. Видимо упоминание саги лишь для того чтобы сделать отсылку на источник вдохновения.

Есть ещё вариант авторизации, когда в заголовке передают зашифрованную строчку. И авторизация происходит по ней.

Sign up to leave a comment.

Articles