熟悉并运用Promise

Promise 是一个异步操纵返回的对象,用来通报异步操纵的音讯。

能够处理的题目:

  1. 处理了回调地狱题目,不会致使难以保护;
  2. 兼并多个异步要求,勤俭时候。

Promise 有三种状况:

  1. Pending Promise 对象实例建立时的初始态;
  2. Fulfilled 胜利时的状况;
  3. 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 ]

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