【发布时间】:2020-11-22 15:29:36
【问题描述】:
我想从顶层代码调用异步方法,然后遇到类似于下面显示的代码作为如何执行此操作的解决方案。看起来虽然它确实调用了 DoSomething(),但它并没有阻塞,并且下面的代码会在 DoSomething() 返回之前继续运行。
// code...
(async () => await DoSomething())();
// more code...
经过进一步考虑,我相信我确实理解它为什么会这样工作。我想我可以将下面的其余代码包装在 .then() 调用中以获得预期的行为,尽管这似乎并不理想。
是否可以写一个同步方法CallSynchronously(asyncMethodToRun)来同步运行一个异步方法?
注意:我没有找到关于 SO 的问题/答案,具体说明如何做我所要求的,我也没有看到明确表示无法完成的答案。但是,如果有人想将这个问题作为重复问题结束并指出其他一些答案,这些答案提供了对我来说非常酷的替代解决方案。我要问的是,如果您所指的答案没有具体说明我所要求的无法完成,那么如果是这种情况,请务必在评论中告诉我。因为如果你不这样做,我会把你吓坏的,哈哈。 :)
【问题讨论】:
-
异步操作不同步;就是这样,他们不能被强迫同步。不过,您可以在 iife 之前添加
await。 -
@xxh 谢谢,我理解你的第一句话。不知道你对第二个的意思是什么......甚至不确定 iffe 是否是一个错字?
-
是的,已更正。
-
哦,哇,对不起;这里:developer.mozilla.org/en-US/docs/Glossary/IIFE.
-
哦,这是顶级代码!?是的,不,是时候拿出那个大的
.thencall :) 有一个关于顶级等待的提议,只是等待它完成并推出。实际上,我现在正在更新我的答案。
标签: javascript react-native async-await