File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ ---
2+ ' @svelte-put/async-stack ' : patch
3+ ---
4+
5+ use ` Set ` instead of array for ` StackItemResolveListener ` to ** help** avoid duplicated callbacks (should discourage the usage of arrow functions)
Original file line number Diff line number Diff line change @@ -14,8 +14,8 @@ export class StackItem {
1414 /** @type {ReturnType<typeof setTimeout> | undefined } */
1515 timeoutId : undefined ,
1616 lastStartedTime : new Date ( ) . getTime ( ) ,
17- /** @type {import('./types.public').StackItemResolveListener<Resolved>[] } */
18- resolveListeners : [ ] ,
17+ /** @type {Set< import('./types.public').StackItemResolveListener<Resolved>> } */
18+ resolveListeners : new Set ( ) ,
1919 /** @type {(r?: Resolved) => void } */
2020 resolve : ( ) => { } ,
2121 } ;
@@ -60,7 +60,9 @@ export class StackItem {
6060 */
6161 resolve = async ( resolved ) => {
6262 if ( this . state === 'resolved' || this . state === 'timeout' ) return this . resolution ;
63- await Promise . all ( this . #internals. resolveListeners . map ( ( callback ) => callback ( resolved ) ) ) ;
63+ await Promise . all (
64+ Array . from ( this . #internals. resolveListeners ) . map ( ( callback ) => callback ( resolved ) ) ,
65+ ) ;
6466 this . #internals. resolve ( resolved ) ;
6567 this . state = 'resolved' ;
6668 return this . resolution ;
@@ -70,6 +72,6 @@ export class StackItem {
7072 * @param {import('./types.public').StackItemResolveListener<Resolved> } callback
7173 */
7274 onResolve = ( callback ) => {
73- this . #internals. resolveListeners . push ( callback ) ;
75+ this . #internals. resolveListeners . add ( callback ) ;
7476 } ;
7577}
You can’t perform that action at this time.
0 commit comments