Promise 是一个异步操纵返回的对象,用来通报异步操纵的音讯。
能够处理的题目:
- 处理了回调地狱题目,不会致使难以保护;
- 兼并多个异步要求,勤俭时候。
Promise 有三种状况:
- Pending Promise 对象实例建立时的初始态;
- Fulfilled 胜利时的状况;
- Rejected 失利时的状况。
运用 Promise:
Promise.then():用来指定 Promise 对象的状况转变时要实行的操纵
let promise = new Promise(function (resolve, reject) {
resolve('胜利');
//reject('失利');
})
promise.then(function (data) {
console.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)
});
输出:err [ 1, 2, 3 ]