Promise的四种用法和区别

@Promise测试 Promise区别

四种Promise区别

话不多说,上图

地狱函数:

ajax({
url: url1,
       success: function(data) {
           ajax({
               url: url2,
               data: data,
               success: function(data) {
   	            ajax({
   	                url: url3,
   	                data: data,
   	                success: function() {
   	                }
   	            });
   	        }
           });
       }
});

先为大家简单的介绍一下Promise()这个其实就是为了解决地狱函数的问题,为了避免一直在函数内嵌套函数,使得效率大大的变慢,也增加了代码的冗余。好的,接着来看这四个区别:

问题一:

在这里插入图片描述
问题1,其实是比较常见的用法,就是在then的响应函数里返回另外一个Promise实例,先执行doSomething,然后执行doSomethingElse函数,最后把return返回的放到finalHandler函数的参数中去执行。

问题二:

在这里插入图片描述
问题2,讲述的就是在then里面执行一个匿名函数,但是在这个函数里并没有return,那就是后面的then中不需要等到前面一个函数执行完再运行,所以两者是同步的关系,所以执行的顺序就如之前的图上的属性执行,这个也是好理解的。

问题三:

在这里插入图片描述
问题3,我们传入了一个函数,但是这个函数是直接执行的方式传入,所以这里传进去的是一个Promise实例,第一个doSomething和第二个doSomethingElse几乎是同时执行的,因为这两者都是在同一个栈内执行,所以看作一起执行,然后在doSomethingElse中返回的是一个Promise实例,而不是一个函数,在promise规范的定义中,这个then会被忽视掉,所以finakHandle监听的是doSomething,当doSomething执行完之后,finalHandler就开始执行。这里是比较难的一点。

问题四:

在这里插入图片描述
问题4,就比较好判断了,then里面接收两个函数作为参数,一个是fulfiled和rejected,那他这边的顺序就是先执行doSomethingElse和resultOfDoSomethingElse。

看完这些,都学会了吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值