解决的是一个异步问题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function dy (list,callback) {
setTimeout(function () {
var task = list.shift();
task();
if (list.length > 0) {
setTimeout(arguments.callee,1000);
} else{
callback();
}
},25);
}
dy([
function () {
alert('a');
},
function () {
alert('b');
}
],
function () {
alert('callback');
});
jq提供的方法

1
2
3
4
5
6
7
8
9
10
11
用例
var callbacks = $.Callbacks('once');
callbacks.add(function () {
alert('a');
})
callbacks.add(function () {
alert('b');
})
callbacks.fire();
callbacks.fire();