00:00
Hello,大家好,这个小节呢,我们来介绍一下promise.all settled,这个方法呢,接收一个promise的数组,返回的结果呢,也是一个promise对象,不过呢,返回的结果呢,它永远是成功的一个状态。啊,而且成功的这个值是里边每一个promise他们的状态和结果,我们来演示一下。首先呢,我们先来声明两个promise。因为咱们组成一个数组啊,所以咱们这声明两个对象好,Constant PE等于一个new的promise。然后呢?在这,我们依然是使用set time out做一个异步任务的模拟。时间完,咱们定位一秒啊,在里边呢,我用resolve来改变它的一个状态,这是一个商品数据杠一啊,我们。就是模拟啊,获取商品数据ID唯一的这个啊,这样一个请求,好把这个呢,咱内容再复制一份,创建一个P2出来。
01:05
好,此时的话两个对象已经就位啊,下边的话我们调用方法,调用这个all settle的方法。好,Constant result等于一个promise.or settled settled,那它是一个数组参数啊,然后里边里边每个元素都是一个promise对象,我们一起来看看这个结果,Consult log打印一下result保存,点开。好,点开它看一下啊,状态是一个resolved,顺便来看一看它成功成功的一个值,注意啊,Resolve的表示是成功。点开这个值,你发现这个值呢是一个数组,而数组每个元素呢是一个对象,这个对象里面包含的是当前这个promise对象,它成功的状态啊,它的一个结果状态和一个结果值。Fulfill的表示什么呢?表示成功,它这个作用呢,跟resolve这块作用是一样的,都表示成功啊,都表示成功好了,那么两个你可以看一下都成功了啊,结果咱们拿到了,那如果说呢,我要把其中一个呢,变为一个失败,比如说啊。
02:13
这块我把上面这个助教下边呢来一个reject。啊,然后出错了。保存你来看结果啊,一秒钟等一下,然后点开它看这状态呢,依然是一个resolved,但是你看这个结果值,你会发现第一个呢,它是一个成功状态,哎,有这个结果,第二个呢,是一个失败的状态,有这个失败的一个原因值。这就是all这个方法它的一个特点,它返回的结果始终是一个成功的,而且它这个成功的一个值是每一个promise对象,它执行的结果,就是它异步任务的一个结果的值和一个状态都有啊,那么跟这个all settle很像呢,是另外一个方法。
03:01
啊,这个另外一个方法呢,叫做什么呢?叫做or or,这个方法呢,也是接受一个promise对象,但是它返回的结果呢,是有一个啊,就是要根据里边的每一个promise米间的一个状态来去决定的,如果说他们都成功,它才会成功,如果说有一个失败,那则这个返回的promise就是一个失败的,我来给他演示一下啊,比如说现在有一个失败的对不对啊,切过来刷新一面,等一秒钟好点开它,你看这整个的一个状态是一个失败的,而且它失败的一个值就是数组里边那个出错的promise,它的一个失败的值。啊,如果说呢,两个都成功来演示一下,我把这个助教把上面打开,然后刷新页面,然后点开你可以看一下啊,这个呢是成功,然后呢,它成功的值是里边数组的promise他们成功的一个结果形成的一个数组。
04:00
是这样的一个特点,他们两个很像,但是呢又有点不同啊,这个只有全部成功才会返回成功的promise,而这个呢啊,始终都能够返回一个成功,而且始终能够得到啊每一个promise成功和失败的状态以及结果,他们两个呢,都用来去做一些批量异步任务的一个啊这样的一个场景啊,就是要根据你的情况来定,如果说你每一个,比方说每一个异步任务啊,你都想得到这个结果,那你就用ole,那如果说呢,你这个异步任务要求每个都成功才能继续往下执行,那你就用or。啊,是这样一个情况,好,这个小节我们就先介绍这么多。
我来说两句