同步:顺序执行,始终和前文保持在一个上下文。
优点:自上而下顺序执行下来,对结果的处理比较简单,就近处理。可以容易捕获、处理异常。
缺点:当代码量大时,自上而下执行解析时间过长,容易阻塞,耗费时间执行效率低,影响用户体验
使用场景:不使用异步
异步:由浏览器(多线程)提供另外的线程去操作,始终等待全部的同步任务执行完毕才回到js线程执行。
优点:避免阻塞,提高执行效率。可以立即或者延时给调用者返回结果,也可以多次调用后统一返回一个结果集合。
缺点:占用更多资源,不利于对进程控制。
使用场景:不涉及共享资源时,没有时序要求时,耗时操作,提高用户体验和使用性能时,不影响主线程的逻辑时。
常见异步任务:回调函数(计时器、事件监听、ajax),发布/订阅,promise,async/await