【发布时间】:2019-03-24 21:13:52
【问题描述】:
所以我目前正在尝试了解异步 javascript。我了解了异步等待、承诺和回调。但在所有示例中,他们都使用setTimeOut() 来生成异步调用。
但我的问题是如何编写类似setTimeOut 函数的东西。例如,我有一个需要时间的大计算,我希望它不会阻塞主线程。我将如何制作一个只计算很多东西但异步的函数?
我只是无法理解这一点。因为在我看来只能通过网络调用等编写异步代码,但我还没有找到一种方法来编写像 async for 循环或类似的东西。
【问题讨论】:
-
在主函数中使用回调...
-
使用常规的旧 javascript 您不需要,您只需使用一个线程即可。如果你需要这样做,你将需要类似web workers(或在node.js 中child procceses)来生成另一个线程/进程。
-
他们不使用
Timeout()来生成一个异步函数,他们使用它模拟一个需要时间执行的动作,因此演示 async 的实际工作原理 -
您通过在每次迭代(或迭代块)之间执行
setTimeout来编写一个异步循环。