Ale*_*Luo 3 javascript npm typescript
我想要实现的是从数据库中获取一个数据,getter 方法是异步的,然后根据promise 返回值导出一个const 变量。
代码是这样的:
import {Storage} from "@ionic/storage";
//...
storage.get("setup_done").then((val)=>{
export const FirstRunPage = val?'valueA':'valueB';
})
Run Code Online (Sandbox Code Playgroud)
但是,我收到一条错误消息:
Modifiers cannot appear here
Run Code Online (Sandbox Code Playgroud)
所有导出都必须出现在顶层,并且没有真正的方法可以像您想要的那样进行某种异步导出。
在我看来,您有两种选择。第一个,可能也是最简单的,就是导出 promise 本身:
import {Storage} from "@ionic/storage";
//...
export const FirstRunPagePromise = storage.get("setup_done").then((val)=>{
return val ? 'valueA' : 'valueB';
})
Run Code Online (Sandbox Code Playgroud)
这意味着模块的使用者必须使用 using 访问值.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;
}
Run Code Online (Sandbox Code Playgroud)
你必须使用 getter,因为导入变量本身会给你一个副本,当 promise resolves 时它不会更新。
这种方法意味着您可以同步访问该值,但如果您过早访问它,它将是undefined. 因此,您的所有代码都必须先检查该值是否存在,然后再使用它。或者你作为开发人员必须知道,任何访问该值的代码都只会在 promise 得到解决后运行。
我个人推荐选项 1,但我之前都做过,最终这取决于您的用例。做对你的情况有意义的事情。
| 归档时间: |
|
| 查看次数: |
3901 次 |
| 最近记录: |