forked from wchaowu/javascript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path5 - XHR connection queue example page.html
More file actions
132 lines (127 loc) · 3.98 KB
/
Copy path5 - XHR connection queue example page.html
File metadata and controls
132 lines (127 loc) · 3.98 KB
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Ajax Connection Queue</title>
<script src="utils.js"></script>
<script src="queue.js"></script>
<script type="text/javascript">
addEvent(window, 'load', function() {
// Implementation.
// 创建队列
var q = new DED.Queue;
q.setRetryCount(5); // 重试次数
q.setTimeout(3000);
var items = $('items');
var results = $('results');
var queue = $('queue-items');
// Keeping track of my own requests as a client.
var requests = [];
// Notifier for each request that is being flushed.
q.onFlush.subscribe(function(data) {
results.innerHTML = data;
requests.shift();
queue.innerHTML = requests.toString();
});
// Notifier for any failures.
q.onFailure.subscribe(function() {
results.innerHTML += ' <span style="color:red;">Connection Error!</span>';
});
// Notifier of the completion of the flush.
q.onComplete.subscribe(function() {
results.innerHTML += ' <span style="color:green;">Completed!</span>';
});
var actionDispatcher = function(element) {
switch (element) {
case 'flush':
q.flush();
break;
case 'dequeue':
q.dequeue();
requests.pop();
queue.innerHTML = requests.toString();
break;
case 'pause':
q.pause();
break;
case 'clear':
q.clear();
requests = [];
queue.innerHTML = '';
break;
}
};
var addRequest = function(request) {
var data = request.split('-')[1];
q.add({
method: 'GET',
uri: 'bridge-connection-queue.php?ajax=true&s='+data,
params: null
});
requests.push(data);
queue.innerHTML = requests.toString();
};
addEvent(items, 'click', function(e) {
var e = e || window.event;
var src = e.target || e.srcElement;
try {
e.preventDefault();
}
catch (ex) {
e.returnValue = false;
}
actionDispatcher(src.id);
});
var adders = $('adders');
addEvent(adders, 'click', function(e) {
var e = e || window.event;
var src = e.target || e.srcElement;
try {
e.preventDefault();
}
catch (ex) {
e.returnValue = false;
}
addRequest(src.id);
});
});
</script>
<style type="text/css" media="screen">
body { font: 100% georgia,times,serif; }
h1, h2 { font-weight: normal; }
#queue-items { height: 1.5em; }
#add-stuff {
padding: .5em;
background: #ddd;
border: 1px solid #bbb;
}
#results-area { padding: .5em;border: 1px solid #bbb; }
</style>
</head>
<body id="example">
<div id="doc">
<h1>Ajax Connection Queue</h1>
<div id="queue-items"></div>
<div id="add-stuff">
<h2>Add Requests to Queue</h2>
<ul id="adders">
<li><a href="#" id="action-01">Add "01" to Queue</a></li>
<li><a href="#" id="action-02">Add "02" to Queue</a></li>
<li><a href="#" id="action-03">Add "03" to Queue</a></li>
</ul>
</div>
<h2>Other Queue Actions</h2>
<ul id='items'>
<li><a href="#" id="flush">Flush</a></li>
<li><a href="#" id="dequeue">Dequeue</a></li>
<li><a href="#" id="pause">Pause</a></li>
<li><a href="#" id="clear">Clear</a></li>
</ul>
<div id="results-area">
<h2>Results: </h2>
<div id="results"></div>
</div>
</div>
</body>
</html>