zoukankan      html  css  js  c++  java
  • 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

    内容关于:前端知识库

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

  • 相关阅读:
    EasyUI-datagrid-自动合并单元格(转)
    js中格式化时间字符串
    ext 3.2 tree 在IE10中点击事件失效的bug
    C#中修改Dll文件 (反编译后重新编译)
    GridView内容<br />换行
    使用Aspose.Words把 word转成图片
    判断移动设备访问自动跳转到移动版页面
    jquery mobile界面数据刷新
    Ubuntu16.04下安装Visual Studio Code
    npm 安装vue 报错Failed at the chromedriver@2.46.0 install script 'node install.js'
  • 原文地址:https://www.cnblogs.com/flower-dance/p/15150290.html
Copyright © 2011-2022 走看看