typescript - 一些 fetch() 之后如何导出一些东西
问题描述
我有以下代码:
class ProjectStore {
constructor(projects: IProjectStrict[]) {
this.projects = projects;
makeAutoObservable(this);
}
projects: IProjectStrict[];
}
export const ProjectStoreInstance = new ProjectStore(projects);
但是projects
,我传递给构造函数的 是 API 调用的结果。我既不能export
在异步 IIFE 中使用:
(async () => {
await fetchProjectList(url);
export const ProjectStoreInstance = new ProjectStore(projects);
})();
也不在构造函数中使用await
权限
export const ProjectStoreInstance = new ProjectStore(await fetchProjectList(url));
这样做的正确方法是什么?
解决方案
You can use top-level await
since Typescript v3.8 (source), something like in this ts playgroud.
class ProjectStore {
constructor(projects: IProjectStrict[]) {
this.projects = projects;
// makeAutoObservable(this);
}
projects: IProjectStrict[];
}
const url = 'asd';
const porjectList: IProjectStrict[] = await fetchProjectList(url);
export const ProjectStoreInstance = new ProjectStore(porjectList);
interface IProjectStrict {
a: string;
}
function fetchProjectList(url: string): Promise<IProjectStrict[]> {
return new Promise<IProjectStrict[]>(resolve => resolve([]));
}
推荐阅读
- python - 错误:无法路由到我新创建的应用程序
- c# - jQuery.ajax - 获取错误消息 (Exception.Message),这是来自后面代码的响应
- visual-studio-code - 要包含的文件中的 Visual Studio Code 高级搜索通配符
- django - 从 Django View 将变量传递给远程(Golang)应用程序的最佳方法
- python - Pandas 数据框通过拆分值加入并通过连接获得结果
- java - 在 Java 中学习 OpenGL。为什么 glIsFramebuffer() 返回 false?
- c# - C# Eventbrite 创建事件
- php - 邮件函数在 PHP 中给出错误返回
- nativescript - nativescript-angular:无法将下拉值设置为默认选择
- node.js - 在不重置数据库的情况下在 sequelize 中添加列