присвоение переменной в генераторах redux saga / саги

#typescript #generator #redux-saga

#typescript #генератор #redux-сага

Вопрос:

Давайте подумаем о следующей саге:

 function* mySaga(){
  const x = yield call(getX)
}
  

По правде говоря, значение const x напрямую присваивается не возвращаемым значением call(getX()) , а скорее тем, что передается в mySaga.next(whatever) при его вызове.

Я предполагаю, что redux-saga достаточно умен, чтобы управлять saga таким образом, чтобы он вызывал .next() метод с результатом выполнения последнего обещания.

Но так ли это, однако? Насколько безопасно просто предполагать, что x на самом деле является результатом getX() ?

Ответ №1:

Насколько безопасно просто предположить, что x на самом деле является результатом getX()

Если генератор запускается redux saga, то до тех пор, пока getX что-то возвращает (т. Е. Не выбрасывает и не переходит в бесконечный цикл), redux saga гарантирует, что сага будет возобновлена с этим возвращаемым значением и, таким образом, присвоена x .

Если вы вручную пройдете сагу, то она получит все, что вы вставите вручную. Пожалуй, единственная причина, по которой я могу подумать о повторении saga вручную, — это написать модульный тест, так что вам не о чем беспокоиться, если вы используете redux saga в том виде, в каком она была разработана.