在test.js中,我有一些回调,可以解析"a";价值然后进一步地;a";值在文件的末尾导出
//test.js
let fun = async ()=>{
let a
await setTimeout(()=>{a = 10}, 100)
return a
}
let a
fun().then(val=>{a=val})
export default a
当我试图在test1.js中导入一个值时,我得到了一个未定义的
test1.js
import a from './test.js'
console.log(a) //undefined
这应该能在中工作
test.js
// this does what you attempted to do
// but actually works
let fun = async () => {
let a = await new Promise(r => setTimeout(r, 100, 10));
return a;
};
let a = await fun();
export default a;
test1.js
import a from './test.js'
console.log(a)
let
在词法上的作用域是最近的块,因此实际上有两个名为a
的不同变量,它们恰好具有相同的名称。
解决方案是使用顶级等待来导出Promise,例如:
export default await Promise.resolve(10)