Promise6

作者: 郭的妻 | 来源:发表于2018-06-21 20:36 被阅读0次
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <script>
        /*
        *1.无阻塞高并发,是nodeJS的招牌,要达到无阻塞高并发必须有基本保障
        * 查找数据从数据库,20000条数据,
        *   1.1  PHP:第一任务查找数据,后面有了新任务,那么后面的任务会被挂起排队;
        *
        *   1.2  NodeJS :是把第一个任务挂起来交给数据库跑,然后去接待第二个任务
        * 给对应的系统组件去处理挂起排队,接着去接待第三个任务,
        *
        * 2.promise两个参数的作用
        *   2.1 resolve的作用:将promise对象的状态从“未完成”变为成功,在异步
        * 操作成功时调用,并将异步操作结果,作为参数传递出去
        *   2.2 reject的作用:将promise对象的状态从“未完成”变为失败,在异步
        * 操作失败时调用,并将异步操作报错结果,作为参数传递出去
        *
        * 3.promise的三种状态
        *  3.1 :pending  等待
        *  3.2 :fulfilled  成功
        *  3.3 :rejected   失败
        *  当promise 状态发生改变,就会触发then()里面的响应函数处理后续步骤:
        *  promise状态一经改变,不会再变
        *
        *  最终状态结果只有两种可能:
        *  pending 等待  ->fulfilled  成功
        *  pending 等待  ->rejected   失败
         */
        //开始做饭
        function cook() {
            console.log("开始做饭");
            let p =new Promise((resolve, reject) => {
                setTimeout(()=>{
                    console.log("做饭完毕");
                    resolve("鸡蛋炒饭");
                },1000)
            });
            return p;
        }
        //开始吃饭
        function eat(data) {
            console.log("开始吃饭"+data);
            let p = new Promise( resolve => {
                setTimeout(()=>{
                    console.log(data+",吃完了");
                    resolve('一双筷子一个碗')
                },2000)
            })
            return p;
        }
        //开始刷碗
        function wash(data) {
            console.log("开始刷完:"+data);
            let p= new Promise(resolve => {
                setTimeout(()=>{
                    console.log(data+",洗完了");
                    resolve("干净的碗筷!")
                },2000);
            })
            return p;
        }
        // 调用方式1
        // cook()
        //     .then((data)=>{
        //         return eat(data)
        //     })
        //     .then((data)=>{
        //         return wash(data);
        //     })
        //     .then((data)=>{
        //         console.log(data);
        //     })
        // 调用方式2
        cook()
            .then(eat)
            .then(wash)
            .then((data)=>{
                console.log(data);
            })
    </script>
    </body>
    </html>

    相关文章

      网友评论

          本文标题:Promise6

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