annotate default/node_modules/jquery/src/queue.js @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
1 define( [
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
2 "./core",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
3 "./data/var/dataPriv",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
4 "./deferred",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
5 "./callbacks"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
6 ], function( jQuery, dataPriv ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
7
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
8 "use strict";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
9
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
10 jQuery.extend( {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
11 queue: function( elem, type, data ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
12 var queue;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
13
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
14 if ( elem ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
15 type = ( type || "fx" ) + "queue";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
16 queue = dataPriv.get( elem, type );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
17
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
18 // Speed up dequeue by getting out quickly if this is just a lookup
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
19 if ( data ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
20 if ( !queue || Array.isArray( data ) ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
21 queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
22 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
23 queue.push( data );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
24 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
25 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
26 return queue || [];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
27 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
28 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
29
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
30 dequeue: function( elem, type ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
31 type = type || "fx";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
32
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
33 var queue = jQuery.queue( elem, type ),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
34 startLength = queue.length,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
35 fn = queue.shift(),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
36 hooks = jQuery._queueHooks( elem, type ),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
37 next = function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
38 jQuery.dequeue( elem, type );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
39 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
40
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
41 // If the fx queue is dequeued, always remove the progress sentinel
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
42 if ( fn === "inprogress" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
43 fn = queue.shift();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
44 startLength--;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
45 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
46
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
47 if ( fn ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
48
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
49 // Add a progress sentinel to prevent the fx queue from being
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
50 // automatically dequeued
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
51 if ( type === "fx" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
52 queue.unshift( "inprogress" );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
53 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
54
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
55 // Clear up the last queue stop function
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
56 delete hooks.stop;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
57 fn.call( elem, next, hooks );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
58 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
59
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
60 if ( !startLength && hooks ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
61 hooks.empty.fire();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
62 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
63 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
64
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
65 // Not public - generate a queueHooks object, or return the current one
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
66 _queueHooks: function( elem, type ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
67 var key = type + "queueHooks";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
68 return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
69 empty: jQuery.Callbacks( "once memory" ).add( function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
70 dataPriv.remove( elem, [ type + "queue", key ] );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
71 } )
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
72 } );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
73 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
74 } );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
75
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
76 jQuery.fn.extend( {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
77 queue: function( type, data ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
78 var setter = 2;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
79
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
80 if ( typeof type !== "string" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
81 data = type;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
82 type = "fx";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
83 setter--;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
84 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
85
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
86 if ( arguments.length < setter ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
87 return jQuery.queue( this[ 0 ], type );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
88 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
89
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
90 return data === undefined ?
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
91 this :
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
92 this.each( function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
93 var queue = jQuery.queue( this, type, data );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
94
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
95 // Ensure a hooks for this queue
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
96 jQuery._queueHooks( this, type );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
97
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
98 if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
99 jQuery.dequeue( this, type );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
100 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
101 } );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
102 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
103 dequeue: function( type ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
104 return this.each( function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
105 jQuery.dequeue( this, type );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
106 } );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
107 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
108 clearQueue: function( type ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
109 return this.queue( type || "fx", [] );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
110 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
111
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
112 // Get a promise resolved when queues of a certain type
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
113 // are emptied (fx is the type by default)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
114 promise: function( type, obj ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
115 var tmp,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
116 count = 1,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
117 defer = jQuery.Deferred(),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
118 elements = this,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
119 i = this.length,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
120 resolve = function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
121 if ( !( --count ) ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
122 defer.resolveWith( elements, [ elements ] );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
123 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
124 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
125
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
126 if ( typeof type !== "string" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
127 obj = type;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
128 type = undefined;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
129 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
130 type = type || "fx";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
131
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
132 while ( i-- ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
133 tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
134 if ( tmp && tmp.empty ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
135 count++;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
136 tmp.empty.add( resolve );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
137 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
138 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
139 resolve();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
140 return defer.promise( obj );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
141 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
142 } );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
143
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
144 return jQuery;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
145 } );