认识并使用Promise

1 了解Promise

  es5在开发过程中基本上都是api用 地狱回调形式,非常不太友好。es6出现了promise,可以很好的解决回调问题。

  

Promise有三种状态:

1、Pending Promise 对象实例创建时的初始态;

2、Fulfilled成功时的状态

3、Rejected失败时的状态

2 使用Promise

  

Promise.then():用来指定Promise对象的状态改变时要执行的操作

let promise = new Promise(function(resolve,reject){
    resolve('成功')
    //reject('失败')
})

promise.then(function (data){
    conlose.log('data: ',data);
},function(err){
    console.log('err: ',err);
})

Promise.all():接收一个数组,数组内是Promise实例,必须都成功才能表示成功

Promise.race():接收一个数组,数组内是Promise实例,最早返回的对象成功了,就变为成功态,如果失败了,就改变状态为失败态。

let fs = require('fs');

function read(url){
    return new Promise(function(resolve,reject){
        fs.readFile(url,'utf8',function(err,data){
            if(err) reject(err);
            resolve(data)
        })
    })
} 

Promise.all([read('1.txt'),read('2.txt')]).then(function (data){
    console.log(data);
},function(err){
    console.log('err: ',err);
})

Promise.race([read('1.txt'),read('2.txt')]).then(function (data){
    console.log(data);
},function (err){
    console.log('err: ',err);
})

Promise.resolve():返回一个Promise实例,这个Promise实例处于resolve状态。

Promise.resolve([1,2,3]).then(function(data){
    console.log(data)
});
输出:[1,2,3]

Promise.reject():返回一个Promise实例,这个Promise实例处于reject状态。

Promise.reject([1,2,3]).then(null,function(err){
    console.log('err',err)
});
输出:[1,2,3]
posted @ 2021-04-25 23:53  底层951  阅读(68)  评论(0)    收藏  举报