Я использую шаблон Redux Saga, и он использует функции генератора, которые содержат экземпляры yield call()
. В основном это выглядит так:
function *a(){
yield call(<some function>);
}
yield takeLatest(SOME_ACTION, a)
Мои вопросы следующие:
1) Я правильно понял, что причина использования
function *a(){
yield call(<some function>());
}
вместо
function a(){
<some function>()
}
в том, что с первым функция генератора будет ждать, пока строка yield call
не вернется, прежде чем продолжить, тогда как во втором вызове () будет вызываться асинхронно?
2) Если я прав насчет (1) ^^, то вызов some_function
внутри a
выглядит следующим образом:
async a() {
await some_function();
}
Это правильно?
3) Если я прав насчет (2) ^^, то, похоже, единственная причина использования функций генератора вместо async / await состоит в том, что функции генератора можно вызывать из yield takeLatest
и т. Д. Это правильно? Или за этим стоит какой-то другой разум?
Спасибо!