以下语法是什么意思?我不明白在收益后使用*
。我是生成器,redux和sagas的新手,所以我很感激帮助理解语法*
,takeEvery()
和return function *(action) {
的作用:
var MIDDLEWARES = []
function builder( ) {
const LOAD_DATA = "POI_LOADER/LOAD_POIS"
MIDDLEWARES.push( function *sagaFunction() {
yield *takeEvery( LOAD_DATA, loadData( statusField) )
} )
}
const loadData = (statusField) => {
return function *(action) {
console.log("action.venueId = " + action.venueId)
}
}
这里有几个问题:
*
中的yield *takeEvery()
是什么意思?似乎由Delegated yield (yield star, yield *) in generator functions回答。*
才能使它成为生成器,因为它包含yield *
语句?这是因为yield *takeEvery()
包含在生成器函数sagaFunction()
?takeEvery()
函数做了什么,特别是假设它前面有*
?我想takeEvery()
。根据其documentation,我认为它将loadData()
应用于LOAD_DATA
中的所有内容。但如果LOAD_DATA
不是数组,此代码中是否需要takeEvery()
?return function *(action)
似乎没有该功能的名称?它是使用输入参数action
声明生成器并为const
loadData
分配该生成器吗?next()
?答案 0 :(得分:1)
因此,生成器允许使用yield
从生成器函数返回值,然后在下次调用时从那里继续执行。
yield*
用于表示返回的值来自另一个生成器 - 因此调用yield*
的生成器函数将实际值创建委托给在这种情况下,另一个生成器函数。
有关详细信息,请参阅MDN on this。