码迷,mamicode.com
首页 > Web开发 > 详细

JS备忘

时间:2017-04-12 09:23:07      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:console   run   cti   异步任务   log   nas   java   res   第一个   

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将其当做参数传递给第三个操作。

 

JS备忘

标签:console   run   cti   异步任务   log   nas   java   res   第一个   

原文地址:http://www.cnblogs.com/madyina/p/6697548.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!