关于这个问题其实我以前没有想过,但就是在最近,我踩坑了,我才明白了这些东西,接下来我就来给大家简单的谈一下。
首先,先来简单介绍一下同步、异步以及回调函数的概念,以此来帮助大家快速的理解问题
-
同步:发出一个调用时,在没有得到结果之前,该调用就不返回;一旦调用返回,就得到返回值。换句话说,就是由调用者主动等待这个调用的结果。
-
异步:调用在发出之后,这个调用就直接返回了,所以没有返回结果。当一个异步过程调用发出后,调用者不会立刻得到结果。而是在调用发出后,被调用者通过状态、通知或通过回调函数,让调用者能响应结果。
-
回调函数:主函数通过参数将函数传递到其它代码的,某一块可执行代码的引用。简单点来说就是,一个函数执行完成之后的返回数据,通过参数的形式传递给主函数。
然后进入主菜,说下我当时遇到的问题。
问题描述:
js 中有一前一后两个语句,第一个是加载控件,就是显示加载中这个样式动画;第二个是一个异步方法,回调函数中存在一个 alert 弹窗。当我执行的时候,发现了一个问题,就是加载动画总是延迟几秒等待异步方法调用完成才显示加载动画和弹出 alert 弹窗,几乎是同时。这肯定是不符合我的需求的,我最开始的想法就是异步去调用后台接口的时候显示加载动画提示用户等待,而不是调完完成才显示加载动画,那样也就没有了意义。