难倒这个,肯定有一种优雅的方式来做到这一点,但不确定是什么。
我想要类似的东西:
let x = 5;
const p = new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, 2000);
}).then(() => {
console.log(x);
});
x = 3;
// Print out 5 after 2 seconds.
Run Code Online (Sandbox Code Playgroud)
基本上,给定与上述类似的设置,是否有办法打印输出,'5'而不管x在异步超时期间的值是否更改?就我而言,这将是很难简单地通过x在resolve()。
当我有以下最小重现代码时:
启动.py
from __future__ import annotations
import a
Run Code Online (Sandbox Code Playgroud)
a.py
from __future__ import annotations
from typing import Text
import b
Foo = Text
Run Code Online (Sandbox Code Playgroud)
b.py
from __future__ import annotations
import a
FooType = a.Foo
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
soot@soot:~/code/soot/experimental/amol/typeddict-circular-import$ python3 start.py
Traceback (most recent call last):
File "start.py", line 3, in <module>
import a
File "/home/soot/code/soot/experimental/amol/typeddict-circular-import/a.py", line 5, in <module>
import b
File "/home/soot/code/soot/experimental/amol/typeddict-circular-import/b.py", line 5, in <module>
FooType = a.Foo
AttributeError: partially initialized module 'a' has no attribute 'Foo' (most likely due to a …Run Code Online (Sandbox Code Playgroud) python annotations circular-dependency python-3.x python-typing