问题描述
const fn: undefined | () => void
并写下:
...
if (!fn)
return;
setTimeout(() => fn(),0);
...
Typescript 会抱怨,指出 fn
对象可能在 setTimeout
中未定义,因为它将异步执行,到它执行时,fn
函数可能确实是未定义的,因此不能作为函数调用。
所以我必须做这样的事情:
...
setTimeout(() => {
if (!fn)
return;
fn();
},0);
...
但是语句的原子性达到什么水平?
我的意思是,即使我在 fn
中检查 undefined
不是 if
,我怎么能确定它仍然不会被语句 fn()
定义。 javascript 在哪个级别提供这种“原子性”/“并发性”?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)