当Promises的then方法链存在串联并联混联该怎么解决?

本文假设你已经学习过了几篇Promises的文章,包括学习了我写的《我对Promises的理解》。

串联、并联和混联都是物理学的电路里的名词,希望你还没有忘记这几个词。

简述串联和并联

串联也就是then链条,这个没什么可说的,一路then下去就可以了。

并联也简单,我们知道Promise.all()和Promise.race()能解决promise并联的问题。

混联

混联就有意思了。举个例子:

案例1
假设,同时并发2个ajax,每个请求获得结果之后,各自再来一次ajax,每个请求获得结果之后,再各自来一次ajax,获得结果之后,把两个结果相加,最后把之和再来一次ajax,获得结果之后结束。

这个案例也就是:

A -> A1 -> A2 ----------↓
        做加法 --->C
B -> B1 -> B2 ----------↑

解决方案:非常简单,new两个Promise对象,各then两步,然后Promise.all()一次,把结果相加,然后再then一次就完事。

案例2
这次有支路。比如从A1并发两个后续ajax,其中一个是A2没错,另一个是A2.5。A2.5又有后续A3.5,然后A3.5的结果也参与到做加法。

解决方案:A1之后的then,创建2个promise对象,再算上B路线的对象,所以Promise.all()传入3个对象。

案例3
修改案例2,其中A3.5不参与加法计算,也就是形成了盲端。

解决方案:盲端意味着它的成功与失败都不妨碍别的线路,那么它就正常写,只是不要执行.reject()或者resolve()就可以了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容