我想要实现的是从数据库中获取数据,getter方法是异步的,然后根据promise返回值导出const变量。
代码是这样的:
import {Storage} from "@ionic/storage";
//...
storage.get("setup_done").then((val)=>{
export const FirstRunPage = val?'valueA':'valueB';
})
但是,我收到一条错误消息:
Modifiers cannot appear here
答案 0 :(得分:2)
所有导出都必须出现在顶层,并且没有办法像你想要的那样进行某种异步导出。
我认为你有两种选择。第一个,也可能是最简单的,只是导出承诺本身:
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,但我之前做过两次,最终取决于你的用例。做适合你情况的事情。