Поскольку map
использует лямбда-функции, вы не можете получить что-то оттуда напрямую.
yield all
является правильным подходом, но вместо fork
эффект call
выглядит более уместным в этом случае, поскольку он блокирует и, следовательно, сохраняет порядок обработки элементов (если это имеет значение):
function * doSomethingWithItem ( item ) {
console.log('doSomethingWithItem', item)
}
function * doSomethingWithAllItems ( items ) {
console.log('doSomethingWithAllItems')
yield all(items.map(item =>
call(doSomethingWithItem, item),
))
console.log('done doSomethingWithAllItems')
}
function * mySaga () {
yield call(doSomethingWithAllItems, [1, 2, 3, 4, 5])
}
Я также проверил ваш код, и doSomethingWithItem
работает в моей среде. Попробуйте обернуть ваш код в try / catch, возможно, у вас возникла ошибка, приводящая к остановке саги.