@@ -17,6 +17,7 @@ var $markedVer = document.querySelector('#markedCdn');
17
17
var $optionsElem = document . querySelector ( '#options' ) ;
18
18
var $outputTypeElem = document . querySelector ( '#outputType' ) ;
19
19
var $inputTypeElem = document . querySelector ( '#inputType' ) ;
20
+ var $responseTimeElem = document . querySelector ( '#responseTime' ) ;
20
21
var $previewElem = document . querySelector ( '#preview' ) ;
21
22
var $previewIframe = document . querySelector ( '#preview iframe' ) ;
22
23
var $permalinkElem = document . querySelector ( '#permalink' ) ;
@@ -298,6 +299,7 @@ function checkForChanges() {
298
299
setScrollPercent ( scrollPercent ) ;
299
300
var endTime = new Date ( ) ;
300
301
delayTime = endTime - startTime ;
302
+ setResponseTime ( delayTime ) ;
301
303
if ( delayTime < 50 ) {
302
304
delayTime = 50 ;
303
305
} else if ( delayTime > 500 ) {
@@ -309,6 +311,22 @@ function checkForChanges() {
309
311
checkChangeTimeout = window . setTimeout ( checkForChanges , delayTime ) ;
310
312
} ;
311
313
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
+
312
330
function setParsed ( parsed , lexed ) {
313
331
if ( iframeLoaded ) {
314
332
$previewIframe . contentDocument . body . innerHTML = parsed ;
@@ -339,6 +357,7 @@ function messageWorker(message) {
339
357
var scrollPercent = getScrollPercent ( ) ;
340
358
setParsed ( e . data . parsed , e . data . lexed ) ;
341
359
setScrollPercent ( scrollPercent ) ;
360
+ setResponseTime ( e . data . time ) ;
342
361
break ;
343
362
}
344
363
clearTimeout ( checkChangeTimeout ) ;
@@ -363,10 +382,16 @@ function messageWorker(message) {
363
382
} ;
364
383
}
365
384
markedWorker . working = true ;
385
+ workerTimeout ( 0 ) ;
386
+ markedWorker . postMessage ( message ) ;
387
+ }
388
+
389
+ function workerTimeout ( seconds ) {
366
390
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 ) ;
368
394
} , 1000 ) ;
369
- markedWorker . postMessage ( message ) ;
370
395
}
371
396
checkForChanges ( ) ;
372
397
setScrollPercent ( 0 ) ;
0 commit comments