• JS备忘


    1. Promise用法

    js异步调用较多,如果某个操作是基于上个异步结果才能执行的,再有一个操作又是基于此操作的,则需要嵌套多层代码,在ES6中引入了Promise写法,可以比较优雅的解决这个问题:

        <script type="text/javascript">
            function runAsync1(para) {
                var p = new Promise(function (resolve, reject) {
                    //做一些异步操作
                    setTimeout(function () {
                        console.log('异步任务1执行完成');
                        resolve(para + 1);
                    }, 1000);
                });
                return p;
            }
            function runAsync2(para) {
                var p = new Promise(function (resolve, reject) {
                    //做一些异步操作
                    setTimeout(function () {
                        console.log('异步任务2执行完成');
                        resolve(para + 2);
                    }, 2000);
                });
                return p;
            }
            function runAsync3(para) {
                var p = new Promise(function (resolve, reject) {
                    //做一些异步操作
                    setTimeout(function () {
                        console.log('异步任务3执行完成');
                        resolve(para + 3);
                    }, 2000);
                });
                return p;
            }
    
            runAsync1(1)
            .then(function (data1) {
                console.log(data1);
                return runAsync2(data1);
            })
            .then(function (data2) {
                console.log(data2);
                return runAsync3(data2);
            })
            .then(function (data3) {
                console.log(data3);
            });
    
        </script>
    

     输出的结果是:

    异步任务1执行完成
    2
    异步任务2执行完成
    4
    异步任务3执行完成
    7
    

     只需要看最后几行就可以,第一个then接收runAsync1的返回值data1可以将其传递给第二个操作,第二个then接收runAsync2的返回值data2将其当做参数传递给第三个操作。

  • 相关阅读:
    数据库的未来:ORM+LINQ+RX
    工具论-科学是实用工具
    事务、锁与原子性
    ORM-面向对象&关系数据库
    swift Class的内存布局
    使用phpexcel导出到xls文件的时候出现乱码解决
    苹果CMS
    js网页如何获取手机屏幕宽度
    常用正则说明
    php中的线程、进程和并发区别
  • 原文地址:https://www.cnblogs.com/madyina/p/6697548.html
Copyright © 2020-2023  润新知