@@ -12,37 +12,121 @@ order: 4
1212
1313# Promise.all
1414
15- ` Promise.all ` 接收一个以 Promise 实例为成员的可迭代对象作为参数,当所有输入的 Promise 成员全部变为 Fulfilled 状态时才会继续执行后续的 ` Promise.prototype.then ` ,如果某个成员变为 Rejected 的时候,函数后续的 ` Promise.prototype.catch ` 会被执行。
15+ ` Promise.all ` 接收一个以 Promise 实例为成员的可迭代对象作为参数,当所有输入的 Promise 成员全部变为 Fulfilled 状态时才会继续执行后续的 [ Promise.prototype.then()] ( ./then ) ,如果某个成员变为 Rejected 的时候,函数后续的 [ Promise.prototype.catch()] ( ./catch ) 会被执行。
16+
17+ ## 语法
1618
1719语法:
1820
1921``` js
20- Promise .all (iterable)
21-
22- Promise .all ([promise1, promise2, ... , promiseN])
22+ Promise .all (values);
2323```
2424
25- 参数:
26-
27- - ` iterable ` :必须具备 [ Iterator] ( ../../iterator-objects/iterator ) 接口,且每个成员都是 Promise 实例。
28-
29- 如果 ` iterable ` 内每个成员都不是 Promise 实例,会先调用 [ Promise.resolve] ( resolve ) 将每个成员转化为 Promise 实例,再进一步处理。
30-
31- | 参数 | 返回值 |
32- | :--------------------------- | :----------------------- |
33- | 空的具备 Iterator 接口的对象 | Fulfilled 状态的 Promise |
34- | 不包含任何 Promise | 异步完成的 Promise |
35- | 其他情况 | Pending 状态的 Promise |
36-
3725类型声明:
3826
3927``` ts
4028interface PromiseConstructor {
41- all<T >(values : readonly (T | PromiseLike <T >)[]): Promise <T []>;
29+ all<T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 >(
30+ values : readonly [
31+ T1 | PromiseLike <T1 >,
32+ T2 | PromiseLike <T2 >,
33+ T3 | PromiseLike <T3 >,
34+ T4 | PromiseLike <T4 >,
35+ T5 | PromiseLike <T5 >,
36+ T6 | PromiseLike <T6 >,
37+ T7 | PromiseLike <T7 >,
38+ T8 | PromiseLike <T8 >,
39+ T9 | PromiseLike <T9 >,
40+ T10 | PromiseLike <T10 >
41+ ]
42+ );
43+
44+ all<T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 >(
45+ values : readonly [
46+ T1 | PromiseLike <T1 >,
47+ T2 | PromiseLike <T2 >,
48+ T3 | PromiseLike <T3 >,
49+ T4 | PromiseLike <T4 >,
50+ T5 | PromiseLike <T5 >,
51+ T6 | PromiseLike <T6 >,
52+ T7 | PromiseLike <T7 >,
53+ T8 | PromiseLike <T8 >,
54+ T9 | PromiseLike <T9 >
55+ ]
56+ );
57+
58+ all<T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 >(
59+ values : readonly [
60+ T1 | PromiseLike <T1 >,
61+ T2 | PromiseLike <T2 >,
62+ T3 | PromiseLike <T3 >,
63+ T4 | PromiseLike <T4 >,
64+ T5 | PromiseLike <T5 >,
65+ T6 | PromiseLike <T6 >,
66+ T7 | PromiseLike <T7 >,
67+ T8 | PromiseLike <T8 >
68+ ]
69+ );
70+
71+ all<T1 , T2 , T3 , T4 , T5 , T6 , T7 >(
72+ values : readonly [
73+ T1 | PromiseLike <T1 >,
74+ T2 | PromiseLike <T2 >,
75+ T3 | PromiseLike <T3 >,
76+ T4 | PromiseLike <T4 >,
77+ T5 | PromiseLike <T5 >,
78+ T6 | PromiseLike <T6 >,
79+ T7 | PromiseLike <T7 >
80+ ]
81+ );
82+ all<T1 , T2 , T3 , T4 , T5 , T6 >(
83+ values : readonly [
84+ T1 | PromiseLike <T1 >,
85+ T2 | PromiseLike <T2 >,
86+ T3 | PromiseLike <T3 >,
87+ T4 | PromiseLike <T4 >,
88+ T5 | PromiseLike <T5 >,
89+ T6 | PromiseLike <T6 >
90+ ]
91+ );
92+ all<T1 , T2 , T3 , T4 , T5 >(
93+ values : readonly [
94+ T1 | PromiseLike <T1 >,
95+ T2 | PromiseLike <T2 >,
96+ T3 | PromiseLike <T3 >,
97+ T4 | PromiseLike <T4 >,
98+ T5 | PromiseLike <T5 >
99+ ]
100+ );
101+ all<T1 , T2 , T3 , T4 >(
102+ values : readonly [
103+ T1 | PromiseLike <T1 >,
104+ T2 | PromiseLike <T2 >,
105+ T3 | PromiseLike <T3 >,
106+ T4 | PromiseLike <T4 >
107+ ]
108+ );
109+ all<T1 , T2 , T3 >(
110+ values : readonly [T1 | PromiseLike <T1 >, T2 | PromiseLike <T2 >, T3 | PromiseLike <T3 >]
111+ );
112+ all<T1 , T2 >(values : readonly [T1 | PromiseLike <T1 >, T2 | PromiseLike <T2 >]);
113+ all<T >(values : readonly [T | PromiseLike <T >]);
42114}
43115```
44116
45- ### 描述
117+ 参数说明:
118+
119+ | 参数 | 参数说明 | 类型 |
120+ | :----- | :------- | :--- |
121+ | values | 见下方 | any |
122+
123+ - 空的具备 Iterator 接口的对象,将返回 Fulfilled 状态的 Promise |
124+ - 不包含任何 Promise,将返回异步完成的 Promise |
125+ - 其他情况,将返回 Pending 状态的 Promise |
126+ - ` iterable ` :必须具备 [ Iterator] ( ../../iterator-objects/iterator ) 接口,且每个成员都是 Promise 实例。
127+ - 如果 ` iterable ` 内每个成员都不是 Promise 实例,会先调用 [ Promise.resolve] ( resolve ) 将每个成员转化为 Promise 实例,再进一步处理。
128+
129+ ## 方法说明
46130
47131` Promise.all ` 执行后返回一个新创建的 Promise 实例,该实例状态由 ` Promise.all ` 参数成员决定,可以分为两种情况:
48132
@@ -71,7 +155,7 @@ Promise.all([p1, p2])
71155 .catch ((err ) => console .log (err));
72156```
73157
74- ## 示例
158+ ## 代码示例
75159
76160### 基本用法
77161
@@ -92,7 +176,7 @@ Promise.all([p1, p2, p3]).then((v) => console.log(v));
92176
93177` Promise.all ` 在任意一个传入的 Promise 否决时返回新的 Rejected 状态的 Promise 实例。
94178
95- 例如,如果你传入的 Promise 中,有四个 Promise 实例在一定的时间之后调用成功函数,有一个立即调用失败函数,那么 ` Promise.all ` 将立即变为 _ Rejected _ 状态。
179+ 例如,如果你传入的 Promise 中,有四个 Promise 实例在一定的时间之后调用成功函数,有一个立即调用失败函数,那么 ` Promise.all ` 将立即变为 Rejected 状态。
96180
97181``` js
98182var p1 = new Promise ((resolve , reject ) => {
@@ -152,4 +236,5 @@ Promise.all(
152236
153237## 参考资料
154238
239+ - [ TypeScript - lib.es2015.promise.d.ts] ( https://github.com/microsoft/TypeScript/blob/main/lib/lib.es2015.promise.d.ts )
155240- [ 📝 Promise.all 处理 Rejection 的技巧] ( https://zhuanlan.zhihu.com/p/26920718 )
0 commit comments