我认为我不明白,为什么我得到回报?我需要创建对象。从promise返回值的两个选项都不起作用。
为什么会这样?我想念什么?
解决方案:在t()中创建变量。然后(res => {const myVar = {...}})
// a.js
exports.t = (key, lang, props) => {
return i18next.changeLanguage(lang).then(t => {
return t(key, props);
});
};
// b.js
import {t} from './a.js'
const myVar = {
a: "a",
b: "b",
c: (()=>{
switch (template) {
case 'a':
// Promise should return value here from t();
default:
break;
}
})(),
d: (async () => {
switch (template) {
case 'a':
// Not working, returns Promise... Why?
return await t('email.Registration Confirmation', lng);
default:
break;
}
})(),
e: (()=>{
switch (template) {
case 'a':
// Not working, returns Promise... Why?
return t('email.Registration Confirmation', lng).then(res => {
return res;
});
default:
break;
}
})()
}
JS是否完全有可能等待该Promise解析,然后完成创建对象?
答案 0 :(得分:5)
async
和await
是通过允许您使用async
函数内部看似非同步的语法来 management 的诺言的工具。
因此,async
函数将总是返回承诺(当其中所有的承诺都解决时,它将解析为返回值是什么)。
您对case 'Register':
之后的函数有误。它返回一个承诺。您没有代码来检查返回的内容。