反应本机异步等待调用返回错误

时间:2019-05-11 18:46:07

标签: react-native async-await expo

await以外的函数:返回错误无法使用关键字await 请帮帮我...


I18n.defaultLocale = 'tr'
await AsyncStorage.getItem('locale').then((value) => {
 I18n.locale = value        
}).done();


I18n.fallbacks = true;
I18n.translations = { en, tr };

const currentLocale = I18n.currentLocale();

export function strings(name, params = {}) {
  return I18n.t(name, params);
};

export default I18n;

2 个答案:

答案 0 :(得分:0)

async函数可以包含一个await表达式,该表达式暂停async函数的执行并等待通过的Promise解析,然后恢复异步函数的执行并返回已解析的值。

  

请记住,await关键字仅在async函数内部有效。   如果您在async函数主体之外使用它,则会得到一个   语法错误。

使用then时不需要使用async/await

有关更多详细信息,请参见async function on MDN Web docs

答案 1 :(得分:0)

您必须使用await / async做类似的事情:

var getItem = async function() {
  // await can be used here
  await AsyncStorage.getItem('locale').then((value) => {
    I18n.locale = value        
  }).done();
}

并这样称呼它:

getItem(); // sync

await getItem(); // in another async function

编辑:与异步功能相比,使用异步功能可以“执行相同的操作”。只是await需要特殊包装。