Skip to content

Commit ab42f86

Browse files
committed
add response time
1 parent acf9c82 commit ab42f86

File tree

3 files changed

+36
-5
lines changed

3 files changed

+36
-5
lines changed

docs/demo/demo.js

+27-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ var $markedVer = document.querySelector('#markedCdn');
1717
var $optionsElem = document.querySelector('#options');
1818
var $outputTypeElem = document.querySelector('#outputType');
1919
var $inputTypeElem = document.querySelector('#inputType');
20+
var $responseTimeElem = document.querySelector('#responseTime');
2021
var $previewElem = document.querySelector('#preview');
2122
var $previewIframe = document.querySelector('#preview iframe');
2223
var $permalinkElem = document.querySelector('#permalink');
@@ -298,6 +299,7 @@ function checkForChanges() {
298299
setScrollPercent(scrollPercent);
299300
var endTime = new Date();
300301
delayTime = endTime - startTime;
302+
setResponseTime(delayTime);
301303
if (delayTime < 50) {
302304
delayTime = 50;
303305
} else if (delayTime > 500) {
@@ -309,6 +311,22 @@ function checkForChanges() {
309311
checkChangeTimeout = window.setTimeout(checkForChanges, delayTime);
310312
};
311313

314+
function setResponseTime(ms) {
315+
var amount = ms;
316+
var suffix = 'ms';
317+
if (ms > 1000 * 60 * 60) {
318+
amount = 'Too Long';
319+
suffix = '';
320+
} else if (ms > 1000 * 60) {
321+
amount = '>' + Math.floor(ms / (1000 * 60));
322+
suffix = 'm';
323+
} else if (ms > 1000) {
324+
amount = '>' + Math.floor(ms / 1000);
325+
suffix = 's';
326+
}
327+
$responseTimeElem.textContent = amount + suffix;
328+
}
329+
312330
function setParsed(parsed, lexed) {
313331
if (iframeLoaded) {
314332
$previewIframe.contentDocument.body.innerHTML = parsed;
@@ -339,6 +357,7 @@ function messageWorker(message) {
339357
var scrollPercent = getScrollPercent();
340358
setParsed(e.data.parsed, e.data.lexed);
341359
setScrollPercent(scrollPercent);
360+
setResponseTime(e.data.time);
342361
break;
343362
}
344363
clearTimeout(checkChangeTimeout);
@@ -363,10 +382,16 @@ function messageWorker(message) {
363382
};
364383
}
365384
markedWorker.working = true;
385+
workerTimeout(0);
386+
markedWorker.postMessage(message);
387+
}
388+
389+
function workerTimeout(seconds) {
366390
markedWorker.timeout = setTimeout(function () {
367-
markedWorker.onerror('Marked is taking a while...');
391+
seconds++;
392+
markedWorker.onerror('Marked has taken longer than ' + seconds + ' second' + (seconds > 1 ? 's' : '') + ' to respond...');
393+
workerTimeout(seconds);
368394
}, 1000);
369-
markedWorker.postMessage(message);
370395
}
371396
checkForChanges();
372397
setScrollPercent(0);

docs/demo/index.html

+3-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ <h1>Marked Demo</h1>
4444
<option value="html">HTML Source</option>
4545
<option value="lexer">Lexer Data</option>
4646
<option value="quickref">Quick Reference</option>
47-
</select>
47+
</select> ·
48+
Response Time:
49+
<span id="responseTime"></span>
4850
</div>
4951

5052
<div id="preview" class="pane">

docs/demo/worker.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ function parse(e) {
3030
});
3131
break;
3232
case 'parse':
33+
var startTime = new Date();
3334
var lexed = marked.lexer(e.data.markdown, e.data.options);
3435
var lexedList = [];
3536
for (var i = 0; i < lexed.length; i++) {
@@ -40,12 +41,15 @@ function parse(e) {
4041
lexedList.push('{' + lexedLine.join(', ') + '}');
4142
}
4243
var parsed = marked.parser(lexed, e.data.options);
43-
44+
var endTime = new Date();
45+
// setTimeout(function () {
4446
postMessage({
4547
task: e.data.task,
4648
lexed: lexedList.join('\n'),
47-
parsed: parsed
49+
parsed: parsed,
50+
time: endTime - startTime
4851
});
52+
// }, 10000);
4953
break;
5054
}
5155
}

0 commit comments

Comments
 (0)