TypeScript如何在promise中导出const

问题描述 投票:1回答:1

我想要实现的是从数据库中获取数据,getter方法是异步的,然后根据promise返回值导出const变量。

代码是这样的:

import {Storage} from "@ionic/storage";
//...
storage.get("setup_done").then((val)=>{
  export const FirstRunPage = val?'valueA':'valueB';
}) 

但是,我收到一条错误消息:

Modifiers cannot appear here

enter image description here为什么会发生这种情况?

javascript typescript npm
1个回答
2
投票

所有导出都必须出现在顶层,并且没有办法像你想要的那样进行某种异步导出。

我看到它的方式你有两个选择。第一个,也可能是最简单的,只是导出promise本身:

import {Storage} from "@ionic/storage";
//...
export const FirstRunPagePromise = storage.get("setup_done").then((val)=>{
  return val ? 'valueA' : 'valueB';
})

这意味着该模块的消费者必须使用.then访问该值,就像任何其他承诺一样。

第二个选项是在解析变量时将值赋给变量,并导出该变量的getter函数:

import {Storage} from "@ionic/storage";
//...
let FirstRunPage: string;

storage.get("setup_done").then((val)=>{
  FirstRunPage = val ? 'valueA' : 'valueB';
});

export function getFirstRunPage() {
  return FirstRunPage;
}

你必须使用getter,因为导入变量本身会给你一个副本,当promise解析时它不会更新。

这种方法意味着您可以同步访问该值,但如果您过早访问它,它将是undefined。因此,您的所有代码都必须先检查该值是否存在,然后再使用它。那个或者你必须知道作为开发人员,任何代码访问该值只会在promise被解决后运行。

我个人推荐选项1,但我之前做过两次,最终取决于你的用例。做适合你情况的事情。

© www.soinside.com 2019 - 2024. All rights reserved.