我看到this answer关于es6进口与要求之间的差异 但其中一个答案引起了我的注意:
事情
import
()实际上是异步的。
示例:
const module = await import('./module.js');
我一直在使用进口已有一段时间,但从未知道可以等待它?
我还创建了一个实验(虚拟角度测试):
1.ts
export const a=3;
app.component.ts
import { Component } from '@angular/core'; //no await here
@Component({
...
})
export class AppComponent {
constructor() {
this.foo();
}
async foo() {
const module = await import('./1'); //<--- if I remove the await, it doesn't work
alerqt(module.a)
}
}
所以导入似乎会返回一个承诺?
问题
我错过了什么?我没有必要在导入Component的前两行中等待:
import { Component } from '@angular/core'; //no await
@Component({
...
})
它在哪里说导入会返回一个承诺?
Also , one of the webpack programmers : (or system.js) said :
如果import只是一个异步函数,那么它将不再存在 可以静态分析模块,就像CommonJS一样 要求,我可以在任意条件下导入等。
But from my testing it does require await , which makes it asynchronisly evaluated.
那么这里发生了什么?