我有一个用于检索内容的RSAA(Redux 标准 API 调用操作)image/jpeg。我见过的所有示例都处理 JSON 数据,因此我复制了该getJSON函数并实现了我自己的getImage函数来处理这种内容类型。我现在遇到的问题是这个 blob 需要转换为 base64,并且必须使用异步函数来完成。因此,我的 FSA 在此异步操作完成之前被触发。
我怀疑我需要在 RSAApayload处理中以某种方式捎带现有的Promise链,但我不确定如何做到这一点。
这是我需要执行Promiseresolve以返回此结果的行注释的代码片段:
export function fetchSiteThumbnailImage(endpoint) {
return {
[CALL_API]: {
endpoint,
method: 'GET',
headers: {
'Accept': 'image/jpeg'
},
types: [
LOAD_SITE_THUMBNAIL_REQUEST,
{
type: LOAD_SITE_THUMBNAIL_SUCCESS,
payload: (action, state, res) => {
return getImage(res).then((blob) => {
const reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = () => {
const base64data = reader.result;
return base64data; // this needs to "resolve" - how??
}
});
},
meta: (action, state, res) => {
return {
siteId,
endpoint
}
}
},
LOAD_SITE_THUMBNAIL_FAILURE
]
}
}
}
谢谢!