美文网首页
认识并使用Promise

认识并使用Promise

作者: 611383f71c9e | 来源:发表于2018-03-18 17:41 被阅读0次

    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 ]

    相关文章

      网友评论

          本文标题:认识并使用Promise

          本文链接:https://www.haomeiwen.com/subject/egzeqftx.html