什么是异步?

  • 能直接拿到结果的是同步
  • 不能直接拿到结果的是异步

**
异步拿到结果的方法

  • 轮询:隔一段时间问一次
  • 回调:写一个函数给浏览器调用,浏览器把结果作为参数传给该函数

异步不一定要用回调(可用轮询),回调也不是只用于异步(可用于同步),异步和回调是合作关系。

判断异步还是同步

如果一个函数的返回值处于

  • setTimeout
  • AJAX(即XMLHttpRequest)
  • AddEventListener

这个三个东西内部,这个函数就是异步函数

AJAX可以设置为同步,但这样做会使请求期间页面卡住,所以不要用
request.open(“get”, “/5.json”, false) 设置false则为同步,默认异步

面试题

  1. const array = ['1', '2', '3'].map(parseInt)
  2. console.log(array)
  3. // [1, NaN, NaN]

map默认传3个参数(item, index ,array),和parseInt要求参数不同,所以不能简化,正确是

  1. const array = ['1', '2', '3'].map(item => parseInt(item))
  2. console.log(array)

image.png
回调地狱
image.png

image.png

image.png
image.png