|
<!DOCTYPE html> |
|
<html> |
|
<meta charset="utf-8"> |
|
<head> |
|
<style> |
|
.container { |
|
border:1px solid #CCC; |
|
} |
|
#jqresults, #wwresults { |
|
font-size: 10px; |
|
} |
|
</style> |
|
<!-- Latest compiled and minified CSS --> |
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css"> |
|
|
|
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> |
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> |
|
|
|
|
|
<script src="citystates.js"></script> |
|
<script> |
|
/* global _:false, citystates:false*/ |
|
|
|
var goJquery= function(requestObj,callback) { |
|
|
|
var theurl = ['http://echo.jsontest.com/city/',requestObj.city,'/state/',requestObj.state].join(''); |
|
jQuery.ajax({ |
|
url:theurl, |
|
dataType:'json' |
|
}).done(function(data) { |
|
callback(data, requestObj.id); |
|
}); |
|
}; |
|
|
|
var goWebWorker=function(requestObj,callback) { |
|
var theurl = ['http://echo.jsontest.com/city/',requestObj.city,'/state/',requestObj.state].join(''); |
|
var worker = new Worker('webworker.js'); |
|
worker.addEventListener('message', function (e) { |
|
var data=JSON.parse(e.data); |
|
callback(data, requestObj.id); |
|
}, false); |
|
worker.postMessage(theurl); // Send data to our worker. |
|
}; |
|
|
|
var formatResult=function(data) { |
|
var formattedData=[]; |
|
_.each(data,function(value,key) { |
|
formattedData.push('<b>'+key+'</b>: '+value); |
|
}); |
|
return formattedData.join(', ').replace('%20',' '); |
|
}; |
|
|
|
var getRequest=function(index,prefix,t0) { |
|
var citystate=citystates[index]; |
|
var requestObj={ |
|
city:citystate[0], |
|
state:citystate[1], |
|
index:index, |
|
timeini:(new Date().getTime() - t0), |
|
id: prefix+index |
|
}; |
|
requestObj.li = '<li id="'+requestObj.id+'">Request '+index+' fired_at: '+requestObj.timeini+' </li>'; |
|
return requestObj; |
|
}; |
|
|
|
|
|
jQuery(document).ready(function() { |
|
jQuery('#beginjrequests').click(function() { |
|
var t0=_.now(); |
|
for(var index=0;index<citystates.length;index++) { |
|
|
|
var requestObj = getRequest(index,'jqrequest',t0); |
|
jQuery('#jqresults').append(requestObj.li); |
|
goJquery(requestObj,function(data, id) { |
|
data.finished_at=_.now()-t0; |
|
|
|
jQuery('#'+id).append(formatResult(data)); |
|
}); |
|
} |
|
|
|
}); |
|
jQuery('#beginwrequests').click(function() { |
|
var t0=_.now(); |
|
for(var index=0;index<citystates.length;index++) { |
|
|
|
var requestObj = getRequest(index,'wwrequest',t0); |
|
jQuery('#wwresults').append(requestObj.li); |
|
goWebWorker(requestObj,function(data, id) { |
|
data.finished_at=_.now()-t0; |
|
|
|
jQuery('#'+id).append(formatResult(data)); |
|
}); |
|
} |
|
}); |
|
}); |
|
</script> |
|
</head> |
|
<body> |
|
<div class="container-fluid"> |
|
<div class="row"> |
|
<div class="col-md-4 col-sm-6 col-xs-6" id="jquery_results"> |
|
<button class="btn btn-default" id="beginjrequests">Begin Jquery requests</button> |
|
<ul id="jqresults"> |
|
</ul> |
|
</div> |
|
|
|
<div class="col-md-4 col-sm-6 col-xs-6" id="webworker_results"> |
|
<button class="btn btn-default" id="beginwrequests">Begin Webworker requests</button> |
|
<ul id="wwresults"> |
|
</ul> |
|
</div> |
|
</div> |
|
</div> |
|
</body> |
|
</html> |