Promise
什么是Promise
ES6 异步编程的一种解决方案,比传统的方案(回调函数和事件)更加的合理和强大
好处 异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数
promise可以解决异步的问题,本身不能说promise是异步的
为什么会有promise
同步:主线程上排队执行的任务,只有前一个任务执行完毕,才能继续执行下一个任务;
异步:不进入主线程,而进入任务队列的任务,只有任务队列通知主线程,某个异步任务可以执行了,该任务才会进入主线程;
最常用的异步操作就是将回调函数作为异步回调的参数来使用,而promise是通过then来做的;
new promise 的时候就会被立即执行,因而为了实现用的时候调用所以将promise写在函数里面;
Promise的作用:
1,主要是用来解决回调嵌套(执行完后再去执行某一些操作,这时候容易形成嵌套再嵌套的问题)的问题,也就是常见的"回调地狱";
2,执行多并发请求获取数据;
Promise的使用:
1,创建 Promise 实例,var p = new Promise();
2,实例创建以后可以用 .then 方法来指定 resolved状态 和 reject状态 的回调函数;
3,用常见的两种异常机制来捕获异常;
Promise的基本语法
语法总结:
1、promise 的参数是一个回调函数,回调函数中有两个 参数人别是resolve, reject resolve 用来返回异步请求成功的结果 reject 用来返回异步请求失败的结果
2、promise 的对象将异步请求结果保存后,需要使用第一个 .then来获取结果resolve函数返回的结果 .catch 获取reject 返回的结果。当然,我们也可以在 第一个.then中的第二个 回调函数获得 reject 返回的结果(上述问题可以查看代码~ 我写注释了)
3、promise 还可意识用 第二个.then是第一个.then的回调函数,这里可以继续处理其他逻辑(个人感觉有些 马后炮的意思,所以不经常使用,出现的概率也比较低)
Promise常用的方法:
实例方法
promise.then():获取异步任务的正常结果。
promise.catch():获取异步任务的异常结果。
promise.finaly():异步任务无论成功与否,都会执行。
对象方法
promise.all (): 并发处理多个异步任务,所有任务都执行成功,才能得到结果,并控制他们返回的【结果的顺序】
注意:promise.all中的 任何一个请求失败,将不会有返回结果。
promise.race (): 并发处理多个异步任务,只要有一个任务执行成功,就能得到结果