【发布时间】:2021-08-30 23:51:28
【问题描述】:
我在用一些数据填充存储之前使用 Google Translate API 和翻译文本,但是使用 call() 效果来翻译效果,即使翻译请求成功,响应也总是进入 catch 块
这是我的传奇:
function* getResults({ payload = 'user' }: ActionType<typeof actions.getResultsRequest>) {
try {
const { data } = yield call(api, `/results/${payload === 'user' ? 'me' : 'team'}`);
const currentLanguage = getSavedState('user.currentLanguage')
if (currentLanguage !== "ptBR") {
const { results: statistics, adequate_protection, ...rest } = data
const translatedProtection: ReturnType<typeof translateText> = yield call(translateText(data.adequate_protection, currentLanguage.replace(/[^a-z]/g, '')))
yield put(actions.getResultsSuccess({ statistics, analysis: { ...rest, adequate_protection: translatedProtection } }));
} else {
const { results: statistics, ...rest } = data
yield put(actions.getResultsSuccess({ statistics, analysis: { ...rest } }));
}
} catch (error) {
yield put(actions.getResultsFailure({ status: true, message: 'Ocorreu um erro' }))
}
}
这是translateText()
export const translateText = async (
text: string | Array<string>,
targetLanguage: string
) => {
try {
const [response] = await translate.translate(text, targetLanguage)
let result: string | Array<string> = response
if (Array.isArray(response)) {
result = response.map((val: string, index) =>
val !== '' ? val : text[index]
)
}
return result
} catch (error) {
console.error('Error translate api =>', `${error}`)
return text
}
}
【问题讨论】:
标签: reactjs typescript redux redux-saga