JS——异步
试着将学到的东西讲出来。
什么是异步编程
异步编程是一种编程模式。我们知道,JS是单线程的,如果处理器要处理一个耗时很长的业务,比如说一个到1e10的叠加函数,很容易导致进程阻塞。那么这个时候就可以将一些类似的业务先拿到进程以外,通过一些特定的方式去调用它们,同时又能保证其之后的同步代码可以继续正常运行。
JS中如何处理同步和异步
所以说通常JS对于一段代码的运行处理时这样子的:
首先将栈内的所有同步代码挨个执行然后抛出。在这个过程中遇到的异步代码对应放入红宏任务或微任务队列中。当同步代码全部执行完毕后,我们先将微任务队列里的代码执行清空,然后从宏任务队列中拿到一个宏任务块。我们将这个宏任务块放进栈中执行,将里面的微任务再次拿到微任务队列中。执行完毕后再次清除微任务队列。这样不断反复,直到栈和两个队列全部清空,这样JS这一部分的代码就执行完毕了。
异步操作主要有哪些
如果对异步操作按照上述过程所述的话可以划分为像setTimeout,setInterval这样的宏任务,以及Promise,MutationObserver这样的微任务。
异步编程的应用场景
我所了解的异步编程的应用场景主要有:
异步网络请求,在SHOPPING中有用到过axios进行向后端发送请求、接收响应。当我在发请求的时候,我并不想在等待服务器响应的时候阻塞项目其他进程,所以我选择使用这种方式,在保证发送请求之后的工作正常进行的同时获取到相应信息,再去处理对应的信息。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ra-Liz's Blog!
评论
ValineGitalk