从async函数导出值



在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)

最新更新