我试图从updateData
yield call
getdata
生成器函数,但该方法没有被调用。
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){
}
}
并非每个生成器都是传奇。为了让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){
}
}