使用谷歌翻译API的翻译应用:函数未返回API调用结果问题
问题解决方法
原因分析
getTranslation是async函数,这类函数始终会返回一个Promise对象——哪怕你在函数里直接return一个值,它也会被自动包装为resolved状态的Promise。你直接打印message时,异步请求还未完成,所以看到的是Promise对象;而函数内部的console.log(translation)能正确输出,是因为await已经等待axios请求完成并拿到了结果。
解决方案
方法1:使用.then()处理Promise
修改调用逻辑,通过Promise的then方法获取最终翻译结果:
let text = "hello world"; const {getTranslation} = apiTranslate; getTranslation(text).then(message => { console.log(message); // 此处输出正确的翻译结果 });
方法2:用async/await包裹调用逻辑
将调用代码放在async函数中,通过await等待Promise完成:
async function fetchTranslation() { let text = "hello world"; const {getTranslation} = apiTranslate; const message = await getTranslation(text); console.log(message); // 输出正确的翻译结果 } fetchTranslation();
如果是在现代浏览器的顶级作用域(比如独立script标签),可以直接使用顶级await:
let text = "hello world"; const {getTranslation} = apiTranslate; const message = await getTranslation(text); console.log(message);
内容的提问来源于stack exchange,提问作者vatsal chauhan
相关产品推荐
相关产品推荐

