同步和异步的区别
同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作
异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容
Promise的作用与特点
1、解决回调地狱问题
2、将异步编程转换为同步编程
3、可以利用 then 方法,进行链式写法;可以书写错误时的回调函数
Promis的状态
下面展示一些 内联代码片
。
var p=new Promise(function(resolve,reject){
if(...){
resolve(result);
}else{
reject(reason);
}
})
1、初始状态:pending
2、成功的操作:resolve
3、失败的状态:reject
Promise的方法
Promise类提供两个将多个期约实例合成一个期约实例的静态方法:Promis.all()和Promise.race(),合成后的期约行为取决于内部期约行为。
Promise.all()会在一组期约全部解决后再解决。如果至少包含一个待定的期约,合成的期约就是待定的,如果包含一个拒绝的期约,那合成的期约就是拒绝的。
Promise.race()。返回一个包装期约,是一组集合中最先拥有返回值的期约。
异步函数async与await
使用async关键字可以让函数具有异步特征,总体上代码是同步求值的。因为异步函数主要针对不会马上完成的任务,所以自然需要一种暂停和恢复执行的能力。使用await关键字可以暂停异步函数后面的代码,让出JS执行时的线程。