同步与异步差异、js实现方法

159 阅读2分钟

同步:方法执行时调用线程会停下来等待执行完成后立即返回结果。 异步:方法执行时调用线程不会停下来执行完成后通过回调函数/Promise 返回结果这使得调用线程在方法执行的同时可以继续执行其他任务。

同步异步
定义要求在发出请求后等待结果返回才能继续执行发出请求后可以立即继续执行而无需等待结果返回
执行顺序顺序执行,按照请求的顺序依次处理可以并发执行,无需等待前一个请求完成
阻塞在等待结果返回期间,当前线程或进程会被阻塞不会阻塞当前线程或进程,可以同时执行其他任务
资源利用使用同步方式可能会导致资源浪费,因为必须等待结果使用异步方式可以更好地利用资源,因为可以在等待结果期间处理其他任务
错误处理同步请求通常使用异常处理机制来处理错误异步请求通常使用回调函数或 Promise 来处理错误
编程复杂性相对较简单,代码顺序执行相对较复杂,需要处理回调函数、异步事件等
示例同步调用函数、阻塞式 I/O 操作异步回调函数、非阻塞式 I/O 操作

JavaScript 异步实现方法

使用回调函数、Promise、async/await 等机制处理异步操作,setTimeout 和 setInterval 用于延迟执行或周期性执行操作,Promise 处理异步操作结果和流程控制,async/await 简化异步操作的编写,fetch 和 XMLHttpRequest 用于发起网络请求和通信。

方法区别用途
setTimeout在指定的延迟时间后执行回调函数延迟执行一段代码或在一段时间后执行某个操作
setInterval每隔一定时间执行回调函数重复执行某个操作,创建周期性任务
Promise支持异步操作的对象,可以处理成功和失败状态处理异步操作结果,进行流程控制和错误处理
async/await基于 Promise 的语法糖,用于编写更直观的异步代码简化异步操作的编写,使其看起来像同步代码
fetch发起网络请求并返回 Promise 对象获取数据和进行网络通信
XMLHttpRequest发起网络请求并进行异步通信旧版的网络请求方法,仍然被广泛使用