数据交换格式:服务器端与客户端之间的数据传输的格式
1.XML(很少用) 2.JSON(主流)
JSON数据:用字符串的方式来表示的对象或数组类型的数据1.对象格式2.数组格式
JSON与JS互相转换:
反序列化:JSON.parse(json串) 序列化:JSON.stringify(js数据)
异步函数:异步函数,不会阻塞主线程代码的执行
回调函数:把一个函数当成参数传递,将来特定的时机调用,一般异步操作,都会用到回调函数
缺点:回调函数的阅读性不好,回调不会立马执行,回调函数如果有大量的嵌套,可维护性差,易产生回调地狱(指维护回调层层嵌套的代码)
promise设计之初,就是为了解决毁掉地狱的问题
promise的基本语法
1.创建promise对象:const p=new Promise((resolve,reject)=>{
promise内部一般可以封装一个异步操作
成功调用resolve,失败调用reject
})
2.使用promise对象 p.then(res=>{处理成功}).catch(res=>{处理失败})
promise三种状态 1.pending进行中 2.fullfilled 成功3.rejected:失败
一旦promise状态发生变化,状态就会被凝固(状态只能修改一次),支持链式编程
一般将创建promise的对象的过程,封装到一个函数中,需要promise对象,调用即可
function sleep(time){
return new Promise((resolve,reject)=>{
setTimeout(()=>{resolve()
},time) }
}
promise 常用的静态方法.all和.race
promise.all([promise1,promise2...]).then(..)等待机制,发起并行的promise异步操作,会等待所有的异步操作都完成,才会走.then
promise.race([promise1,promise2...]).then(..)赛跑机制,发起并行的promise异步操作,只要任何一个异步操作完成就会走.then