ajax最早出现的发送后端请求技术,它的核心是XMLHttpRequest对象,如果出现多个请求就会出现回调地狱的问题。
Jquery ajax是JQuery底层AJAX实现,他的$.ajax()返回他创建的XMLHttpRequest对象,增加了对JSONP的支持。
Axios 需要进行安装,既可以在客户端使用,也可在node.js使用。它是基于Promise对象的。
Fetch 提供了对请求和响应对象的定义,使其之后可以被使用到多个场景。Fetch是ajax的替代品,在结构上比ajax简单,基于Promise,它是通过原生js实现的。
Promise是一个异步对象,它的缺点是:
1.无法取消Promise,一旦新建他就会立即执行
2.不设置回调函数,内部错误无法反映到外部
3.当处于pending状态时,无法得知目前进展
4.当Promise真正执行回调的时候,定义的那部分实际上已经走完了,所以Promise报错堆栈上下文不太友好
Generator是ES6引入的新语法,他是一个可以暂停和继续执行的函数,他的语法主要是包括两个部分:一是函数前加*,二是yield关键字返回值。它里面有一个next方法,可以带一个参数,该参数会被当做上一个yield表达式的返回值。
Async/Await 让代码简洁,不需要像Promise一样需要then,避免了代码的嵌套,在错误处理上,rty/catch可以同时处理同步和异步错误。