es6 promise对象回调处理详解

11 篇文章 0 订阅

在JavaScript的世界中,所有代码都是单线程执行的。
由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行。
通常我们用得较多的是setTimeout来做一个回调,但本文说得是Promise这个高大尚的es6新对象,
所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。简单的说它的回调函数会在整个html执行结束后它再执行。

        <script>
            console.log('我是顺序运行的1号');
//          回调测试1,带promise实例化时的参数
            function test1(value){
                console.log('回调测试1')
                return value
            }
//          回调测试2,不带promise实例化时的参数
            function test2(){
                console.log('回调测试2')
                return arguments[0]
            }
//          创造了一个Promise实例
            let p = new Promise(function (resolve, reject) {
                console.log('创造了一个Promise实例');
                //异步操作成功时调用,并将异步操作的结果,作为参数传递出去
                resolve(666);
            });
            console.log('我是顺序运行的2号');

//          方法一:最简便的,拿到的是创造Promise实例时给resolve的参数
            p.then(function(result) {
              // success
              console.log('方法一回调成功结果是:'+result)
            }, function(error) {
              // failure
              console.log('failure1:'+error)
            });
//          方法二:先执行指定的函数再回调,test1这时就是resovle,所以参数是666
            p.then(test1)
             .then(function (result) {
                console.log('方法二回调成功结果是:' + result);
            }, function(error) {
              // failure
              console.log('failure2:'+error)
            });
//          方法三:先执行指定的函数再回调,test1这时就是resovle,所以默认参数是arguments里面也有666
            p.then(test2)
             .then(function (result) {
                console.log('方法三回调成功结果是:' + result);
            }, function(error) {
              // failure
              console.log('failure3:'+error)
            });
            console.log('我是顺序运行的3号');
        </script>

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值