es5在开发过程中基本上都是api用 地狱回调形式,非常不太友好。es6出现了promise,可以很好的解决回调问题。
Promise有三种状态:
1、Pending Promise 对象实例创建时的初始态;
2、Fulfilled成功时的状态
3、Rejected失败时的状态
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]
原文:https://www.cnblogs.com/sy2077/p/14702729.html