zoukankan      html  css  js  c++  java
  • 11-ES6之Promise 对象

    概述

    是异步编程的一种解决方案。

    从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。

    Promise 状态

    状态的特点

    Promise 异步操作有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。除了异步操作的结果,任何其他操作都无法改变这个状态。

    Promise 对象只有:从 pending 变为 fulfilled 和从 pending 变为 rejected 的状态改变。只要处于 fulfilled 和 rejected ,状态就不会再变了即 resolved(已定型)。

    状态的缺点

    无法取消 Promise ,一旦新建它就会立即执行,无法中途取消。

    如果不设置回调函数,Promise 内部抛出的错误,不会反应到外部。

    当处于 pending 状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。

    then 方法

    then 方法接收两个函数作为参数,第一个参数是 Promise 执行成功时的回调,第二个参数是 Promise 执行失败时的回调,两个函数只会有一个被调用。

    then 方法的特点

    在 JavaScript 事件队列的当前运行完成之前,回调函数永远不会被调用。

      <script>
            //异步操作更方便
            //基本操作:async返回一个Promise对象then,catch
            //解决回调地狱问题
            //async是Generator的一个话音语法糖
            async function f(){
                //return await 'hello'
                //await返回的是Promise对象
                let s= await "hello"
                let data= await s.split('')
                return data
            }
    
            async function f2(){
                throw new Error("error")
                return data
            }        
            //v是等待所有await执行完后的结果
            f().then(v=>{console.log(v)}).catch((err)=>{})
            f2().then(v=>{console.log(v)}).catch((err)=>{console.log(err)})
    
            async function f3(){
                //这地方如果有reject就不会向下执行
                await Promise.reject("eroor");
                await Promise.resolve("success");
    
    
            }
    
            async function f4(){
                //如果向继续向下try
                try{
                    await Promise.reject("eroor");
                }    
                catch(error){ }
                await Promise.resolve("success");
    
                
            }
        </script>
    

      

  • 相关阅读:
    7.21 高博教育 数组 内存
    【基础扎实】Python操作Excel三模块
    PAT 甲级 1012 The Best Rank
    PAT 甲级 1011  World Cup Betting
    PAT 甲级 1010 Radix
    链式线性表——实验及提升训练
    循环程序设计能力自测
    链表应用能力自测
    PAT 甲级 1009 Product of Polynomials
    1008 Elevator (20分)
  • 原文地址:https://www.cnblogs.com/lixiang1013/p/13657780.html
Copyright © 2011-2022 走看看