zoukankan      html  css  js  c++  java
  • Promise 的深度学习

    1.Promise 是什么?

    Promise 是异步编程的一种解决方案,比传统的解决方案–回调函数和事件--更合理和更强大.Promise ,简单说就是一个容器,里面保存着某个未来才回结束的事件(通常是一个异步操作)的结果。从语法上说,Promise是一个对象,从它可以获取异步操作的消息。
    Promise 对象的状态不受外界影响.ES6规定,Promise对象是一个构造函数,用来生成Promise实例.
    有all、reject、resolve这几个眼熟的方法,原型上有then、catch方法,

    三种状态:

    pending:进行中
    fulfilled :已经成功
    rejected 已经失败

    2.Promise对象的状态改变,只有两种可能:

    从pending变为fulfilled
    从pending变为rejected。
    这两种情况只要发生,状态就凝固了,不会再变了,这时就称为resolved(已定型)

    resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;
    reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
    Promise 实例生成以后,可以用then 方法分别指定resolved状态和rejected状态的回调函数。
    promise.then(function(value){
    //success
    },function(error){
    //failure
    });

    3. 封装一个

    function runAsync(){
    var p = new Promise(function(resolve, reject){
    //做一些异步操作
    setTimeout(function(){
    console.log('执行完成');
    resolve('数据');
    }, 2000);
    });
    return p;
    }
    runAsync()
    而Promise的优势在于,可以在then方法中继续写Promise对象并返回,然后继续调用then来进行回调操作。从表面上看,Promise只是能够简化层层回调的写法,而实质上,Promise的精髓是“状态”,用维护状态、传递状态的方式来使得回调函数能够及时调用,它比传递callback函数要简单、灵活的多。
    done、finally、success、fail等这些并不在Promise标准中,而是我们自己实现的语法糖。

    参考文章:http://www.cnblogs.com/lvdabao/p/es6-promise-1.html 《大白话讲解promise》

  • 相关阅读:
    pxe基于虚拟机的自启动
    time & datetime
    python文件读写操作
    lambda与常用内置函数
    python基础
    python day2:python 初识(二)
    mysql select
    python day1:初识Python(一)
    linux命令总结
    lvs/dr配置
  • 原文地址:https://www.cnblogs.com/panax/p/9448232.html
Copyright © 2011-2022 走看看