Promise
Promise是一个ES6为了解决异步编程的方案,从语法来说Promise是一个对象,可以获取异步操作的消息,从本质来说他只是承诺给你返回一种状态,pedding(等待),fuliled(成功),rejected(失败)。而在Promise中,真正异步的其实是里面的执行器内部操作
return new Promise((resolve,reject)=>{})这里面的参数函数就是执行器,而执行器本身是和同步的
axios
axios是Promise基于http封装的一个库,所以axios也是异步的,这一点通过axios也可以使用then()可以看出来,并且返回的也是一个promise对象
刚刚开始作为小白的我虽然对这些都知道怎么使用,但是对于关系不是很理解,一直认为promise和axios差不多,包括使用功能上,后面仔细对比过才发现,axios其实比Promise成熟许多,包括多封装了响应拦截,以及同一设置baseurl和请求方法等
请求方法的别名
为方便起见,为所有支持的请求方法提供了别名
axios.request(config)
axios.get(url[, config])
axios.delete(url[, config])
axios.head(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])
NOTE
在使用别名方法时, url
、method
、data
这些属性都不必在配置中指定。
并发
处理并发请求的助手函数
axios.all(iterable)
axios.spread(callback)
ajax
本身是针对MVC的编程,不符合现在前端MVVM的浪潮
基于原生的XHR开发,XHR本身的架构不清晰,已经有了fetch的替代方案
JQuery整个项目太大,单纯使用ajax却要引入整个JQuery非常的不合理(采取个性化打包的方案又不能享受CDN服务