同步, 异步,promise

62 阅读1分钟
  1. 我们都知道JS是单线程语言,只能同时做一件事,所有程序按照顺序执行,当我们遇到某段需要花费一些时间才能执行的程序时(比如:网络请求,定时任务等),JS程序执行的整个进程就会卡在这段程序等待的时间中,异步就是当我们遇到这类问题时,不让代码阻塞在这里。
  2. 于是,异步逻辑而出 => promise 表示承诺在未来的某个时刻可能会完成并返回结果, 异步操作是指在程序执行过程中,某个操作不会立即返回结果,而是需要 ,而是需要一段时间的等待
  3. Promise对象有三种状态pending(待处理),fu1filled(已履行)rejected(被驳回)
  • 当创建一个promise对象时,它的初始状态为pending,表示异步执行还未完成
  • 当异步执行成功时,会调用resolve函数把promise对象的状态改变为fulfilled,可通过then方法来获取异步操作的
  • 当异步执行异常时,会调用reject函数把promise对象的状态更改为rejected,可通过catch方法来处理错误 4.同步代码和异步代码是怎么执行的? image.png
  1. 同步代码,一行一行放在callstack执行
  2. 遇到异步,会先"记录"下,等待时机(定时,网络请求等)
  3. 时机到了,就移动到callbackqueue
  4. 如callstack为空(即同步代码执行完)eventloop开始工作
  5. 轮询查找calbackqueue,如有则移动到calstack执行
  6. 然后继续轮询查找(永动机一样)

语法格式