
本人编程小白一枚,希望多多包涵~
如果阅读有疑问的话,欢迎评论或私信!!
本人会很热心的阐述自己的想法!谢谢!!!
文章目录
- 异步
- 揭示原理
- Promise.race未完待续(……)
异步
我们知道,JavaScript是单线程模式。在异步序列中(即Promise链),任何时刻都只有一个任务正在执行——代码2只能在代码1之后,代码3只能在代码2之后。那么我们想要同时执行代码1和代码2——“并行执行”时,我们应该怎么做呢?
在计算机中,有一个称之为
“门”的机制,在符合对应条件时(与、或、非),门才可以通过。它们之间的执行时间可能长短不一,执行的顺序也难以推测,但是如果只需要等全部完成才继续的话,我们可以使用Promise提供的一种方法all
揭示原理
假设有一个请求方法,我们命名为“MyAjax”,该方法可以是Promise,也可以是立即值。考虑下面一个代码:
var p1 = MyAjax("...");
var p2 = MyAjax("...");
Promise.all([p1,p2]).then({
function fulfilled(msgs){
console.log(msgs)//msgs是一个p1、p2请求结果的数据!
},
function rejected(){
}
})
关于all的数组中参数的类型,由于在该方法本质中,都会被调用Promise.resolve()进行过滤为Promise。注意,如果本身是Promise,然后再调用Promise.resolve(),不会有额外开销的!
Promise.all返回的Promise,只有在所有Promise都完成后才会调用完成回调。如果有任何一个Promise被拒绝的话,都会被立即拒绝,并丢弃其他所有Promise的结果。


![[论文阅读] 空间熵图像增强算法(Spatial Entropybased Contrast Enhancement in DCT)](https://img-blog.csdnimg.cn/direct/14c9418f39f94db4a516afb528790393.png)








![洛谷 P1028 [NOIP2001 普及组] 数的计算](https://img-blog.csdnimg.cn/direct/6694d515c8194bfab3b6322f90adefed.png)







