如何将价值从承诺传递到父范围?

时间:2018-10-17 23:42:35

标签: function react-native scope promise expo

我一直在尝试使用expo在本机上获取用户区域设置。问题是,我需要获取promise值并将其传递给return函数。该值当前为“未定义”。

这是代码:

export default locales = () => {
  var locals;
  Expo.DangerZone.Localization.getCurrentLocaleAsync().then((value) => {
    locals = value;
  });
return locals;
}

如何获取承诺值并将其返回给函数?

1 个答案:

答案 0 :(得分:0)

return locals;发生在您的诺言返回之前,因此undefined也是如此。您需要使用回调:

export default locales = (callback) => {
  Expo.DangerZone.Localization.getCurrentLocaleAsync().then((value) => {
    return callback(value);
  });
}

然后您可以像这样访问值:

your_module.locales((locals)=>{
  // use locals here
});

或者,如果您可以在较新版本的节点中访问异步/等待,则:

export default locales = async () => {
  let value = await Expo.DangerZone.Localization.getCurrentLocaleAsync()
  return value;
}

然后您将这样调用函数:

let locals = await your_module.locales()

但是,考虑到有一个功能Expo.DangerZone.Localization.getCurrentLocaleAsync(),您确定不存在同步版本getCurrentLocaleSync()getCurrentLocale()吗?这样可以轻松得多,您可以直接调用该函数并获取值。