Я обновил старую версию Redx Saga до последней версии, и следующая программа перестала работать.
function* loadAlbumPhoto({ entity }, entityId) {
try {
const { accessToken: at } = yield select(state => state.user.info);
let {
data: { data: albums }
} = yield call(API.loadAlbumByEntityId, { entityName: entity, entityId, type: PHOTO });
if (!albums.length) {
const options = {
entityId,
entityName: entity,
title: PHOTO,
type: PHOTO
};
yield call(API.createAlbum, options);
({ data: { data: albums } } = yield call(API.loadAlbumByEntityId, { entityName: entity, entityId, type: PHOTO }));
}
const [album] = albums;
const { data: { data: photos } } = yield call(API.loadPhotosByAlbumId, album.id);
return yield photos.map(function* (photo) {
const src = yield getPhotoUrl(photo.uploadData.path, at);
return {
src,
uploadId: photo.uploadId,
photoId: photo.id
};
});
} catch (err) {
console.log(err);
return [];
}
}
function* getPhotoUrl(path, at) {
try {
const userPhoto = yield API.userPhoto(path, at);
return userPhoto;
} catch (err) {
/* eslint-disable no-console */
console.log(err);
/* eslint-enable no-console */
}
return "";
}
Как видите, я пытаюсь вернуть массив из loadAlbumPhoto, но моя проблема в том, что мне нужно вызвать getPhotoUrlфункция, которая также является функцией генератора.
Проблема в том, что результатом loadAlbumPhoto является массив генераторов, а не массив значений.Это произошло с момента моего обновления до последней версии Redx и Sag.
Уже пытался использовать yield*
, но не работает, или я не знаю, как его использовать. доходность *