• ES6 语法详解(Promise对象(重点))


    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        </head>
        <body>
        </body>
        <script type="text/javascript">
            /**
             * Promise对象
             * 1. 理解:
             *     Promise对象; 代表了未来某个将要发生的事件(通常是一个异步操作)
             *     有了Promise对象,可以将异步操作以同步的流程表达出来,避免了层层嵌套的回调函数(俗称'回调地狱')
             *     ES6的Promise是一个构造函数,用来生成Promise实例
             * 2. 使用Promise的基本步骤(2步)
             */
            // 1: 创建Promise对象
            /* 
            let promise = new Promise((resolve, reject) => {
                // 初始化Promise状态为pending
                // 2:执行异步操作
                // ajax xxx query
                // 如果执行成功
                if(true){
                    resolve('执行成功') //修改Promise的转台为fullfilled
                }else{
                    reject('执行失败') // 修改Promise的转台为rejected
                }
            }) */
            // 2: 调用Promise的then()
            /*
            then
                第一个函数是成功返回的时候执行
                第二个函数是失败返回的时候执行
            catch
                异常的时候执行
            promise.then(res => {
                console.log(res)
            },err => {
                console.log(err)
            }).catch(err => {
                console.log(err)
            })
             */
            /**
             * promise 对象的三种状态
             * pending: 初始化状态
             * fullfilled: 成功状态
             * rejected: 失败状态
             */
    
            /**
             * 应用:
             *     使用Promise实现超时处理
             * 
             *     使用Promise封装处理Ajax请求
             */
            /* 
            let request = new XMLHttpRequest()
            reject.onreadystatechange = function(){}
            request.responseType = 'json'
            request.open('GET', 'http://www.baidu.com')
            request.send() 
            */
    
            // 上面的代码 不可以执行 只做参考
            let promise = new Promise((resolve, reject) => {
                // 使用定时器模拟异步操作
                setTimeout(() => {
                    console.log("send ajax!")
                    let flag = true;
                    if (flag) {
                        resolve("执行成功!")
                    } else {
                        reject("执行失败")
                    }
                }, 1000)
            })
            
            promise.then(res => {
                console.log('第一个函数:',res)
            },err => {
                console.log('第二个函数:',err)
            }).catch(error => {
                console.log("服务器开小差了!")
            })
        </script>
    </html>

    作者:彼岸舞

    时间:2021816

    内容关于:前端知识库

    本文属于作者原创,未经允许,禁止转发

  • 相关阅读:
    (Problem 3)Largest prime factor
    (Problem 2)Even Fibonacci numbers
    (Problem 33)Digit canceling fractions
    (Problem 28)Number spiral diagonals
    多线程与多进程
    安装非英语版本的 Microsoft Visual Studio 2008 Service Pack 1 后,智能提示变为英文的临时补丁发布
    SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的区别比较
    MSIL Instruction Table
    使用updatePanel报错 “不允许进行筛选”!
    SQLServer2008中恼人的"阻止保存要求重新创建表的更改"
  • 原文地址:https://www.cnblogs.com/flower-dance/p/15150290.html
Copyright © 2020-2023  润新知