我正在使用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)^^是正确的,那么似乎使用生成器函数而不是异步/等待的唯一原因是可以从yield takeLatest
等调用生成器函数。正确?还是背后还有其他合理性?
谢谢!
答案 0 :(得分:0)
生成器函数更加灵活,可以根据生成器使用的次数来产生不同的东西。我想到了某种分页。以下是一些使用async/await
实现的生成器函数示例:
答案 1 :(得分:0)
'yield'将等到生成器展开到此'yield'迭代。
传奇生成器(工作者)的想法是使用效果创建者(输入,调用等)生成特殊功能(所谓的“效果”),而不仅仅是做某事。这样可以编排函数调用。