-1
下面的語法是什麼意思?收益後我不明白使用*
。我是新來的發電機,終極版和傳奇故事,所以我希望得到一些幫助理解什麼語法*
,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回答。- 爲什麼builder()函數不需要
*
使它成爲發生器,因爲它包含yield *
語句?那是因爲yield *takeEvery()
是否包裹在發電機功能sagaFunction()
? takeEvery()
函數做了什麼,特別是它前面有一個*
?我認爲takeEvery()
。基於它的documentation,我認爲它適用於LOAD_DATA
中的所有內容loadData()
。但是,如果LOAD_DATA
不是數組,那麼在此代碼中是否需要takeEvery()
?- 聲明
return function *(action)
怎麼看起來沒有這個函數的名字?它是否聲明一個輸入參數爲action
的發電機,並將該發電機分配給const
,稱爲loadData
? - 佐賀圖書館是否在此代碼中創建的生成器上調用
next()
?
這是合法嗎?它看起來很奇怪。 '*'是關鍵字的一部分,即它是'function *'和'yield *'。我不知道空白是允許的,這太瘋狂了。 –
[clicky](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield*) – Cypher