初探 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谁先实行完就实行就猎取先实行的值

天天提高一点,愿望人人喜好,也愿望喜好的朋侪点个赞或珍藏,后续继承更新…

    原文作者:仅此而已
    原文地址: https://segmentfault.com/a/1190000013944502
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞