初探 es6 promise

发布时间:2019-08-10 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了初探 es6 promise脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
javascript是单线程程序,所有代码都是单线程执行。导致javascript的网络请求都是异步执行,异步执行可以通过回调函数实现:
setTimeout(callback,1000);
function callback(){
    console.LOG('----callback')     
    //1秒钟才能打印,回调函数处理异步执行的
};
但是es6推出一种新的方法new Promise()==>对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值。
new Promise( function(resolve, reject) {...});resolve 表示成功的状态 reject 表示失败的状态
Promise的方法有:
1.Promise.all([]).then(e=>e).catch(e=>e) ==>数组中所有传入状态完成才执行
2.Promise.race([]).then(e=>e).catch(e=>e) ==>数组中又一个传入的状态完成就执行
3.PRomise.resolve({}) ==>返回一个成功的状态
4.Promise.reject({}) ==>返回一个失败的状态
let a=new Promise((resolve,reject)=>{
    resolve(1)
    //或reject()
});
a.then(e=>{   // resolve 返回的结果
    console.log(e)  //1
}).catch(e=>{ //reject 返回的结果
    console.log(e)
});
如果我们有一个需求是需要所有3个接口的数据都返回了然后再进行操作,那么promise.all就可以解决,比如下面例子:
let b1=new Promise((resolve,reject)=>{
    resolve('b1')
});
let b2=new Promise((resolve,reject)=>{
    resolve('b2')
})
let b3=new Promise((resolve,reject)=>{
    resolve('b3')
});
let b4=Promise.resolve('成功')  //调用一个成功的状态
Promise.all([b1,b2,b3,b4]).then(value=>{
    console.log(value)   //  'b1', 'b2', 'b3' ]
})
let b5=Promise.reject('失败')  //调用一个失败的状态
Promise.all([b1,b5]).then(value=>{
    console.log(value)   
}).catch(e=>{
    console.log(e,'------失败')  //失败
})
如果我们有一个需求是3个接口中只要有一个完成了接口请求即执行,Promise.race([])
VAR promise1 = new Promise(function(resolve, reject) {
    setTimeout(resolve, 50, 'one');
});
var promise2 = new Promise(function(resolve, reject) {
    setTimeout(resolve, 100, 'two');
});
Promise.race([promise1, promise2]).then(value=>{    
  console.log(value);  //one  
}).catch(e=>{
    console.log(e)
})
//promise1或者promise2谁先执行完就执行就获取先执行的值

每天进步一点,希望大家喜欢,也希望喜欢的朋友点个赞或收藏,后续继续更新...

脚本宝典总结

以上是脚本宝典为你收集整理的初探 es6 promise全部内容,希望文章能够帮你解决初探 es6 promise所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。