#javascript #reactjs #redux #redux-saga
Вопрос:
Я пытаюсь yield call
getdata
создать функцию из updateData
, но метод не вызывается.
function* getdata(action) {
try {
let response = yield call(doCall, {
url: 'https://.....',
method: GET,
});
}catch(e){
}
}
function* updateData(action) {
try {
let array = ['1', '2', '3'];
array.map(function* (i){
return yield call(getdata, { ...action }); // this is not
// calling getdata generator method
});
}catch(e){
}
}
Ответ №1:
Не каждый генератор-это сага. Чтобы библиотека redux-saga обработала его, вам нужно каким-то образом передать его в библиотеку (например, с помощью call
или fork
). В этом случае вы можете использовать метод массива map
для создания массива эффектов, которые затем можно выполнить с помощью all
.
function* updateData(action) {
try {
let array = ['1', '2', '3'];
const effectList = array.map(i => call(getdata, { ...action }));
const result = yield all(effectList);
}catch(e){
}
}