Skip to content

Instantly share code, notes, and snippets.

@tomoTaka01
Created October 18, 2015 09:36
Show Gist options
  • Select an option

  • Save tomoTaka01/5e35b6e93cacaf32f666 to your computer and use it in GitHub Desktop.

Select an option

Save tomoTaka01/5e35b6e93cacaf32f666 to your computer and use it in GitHub Desktop.
JavaScript Promise Sample
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="js/vender/bootstrap-3.3.5-dist/css/bootstrap.css" rel="stylesheet">
<title>Promise Sample</title>
</head>
<body>
<div class="container">
<h3>Promise Sample</h3>
<div class="row">
<div class="input-group">
<label class="col-sm-7">Resolve Time(seconds):</label>
<input class="col-sm-5" type="number" id="resolveTime">
</div>
<div class="input-group">
<label class="col-sm-7">Reject Time(seconds):</label>
<input class="col-sm-5" type="number" id="rejectTime">
</div>
<button class="btn btn-primary" id="startPromise">Start Promise</button>
<h3>Result</h3>
<div id="result">
<ol>
</ol>
</div>
</div>
</div>
<script src="js/vender/jquery-1.11.3.min.js"></script>
<script src="js/vender/bootstrap-3.3.5-dist/js/bootstrap.js"></script>
<script src="js/sample.js"></script>
</body>
</html>
'use strict';
(function(){
var startBtn = document.getElementById('startPromise');
startBtn.addEventListener('click', function(){
var resolveTime = document.getElementById('resolveTime').value;
var rejectTime = document.getElementById('rejectTime').value;
var promise = new Promise(function(resolve, reject){
if (resolveTime <= rejectTime) {
// resolve Timeの方が短いので、resolveを呼び出す
window.setTimeout(function(){
var values = {val:'resolved', sec:resolveTime};
resolve(values);
}, resolveTime * 1000);
} else {
// reject Timeの方が短いので、rejectを呼び出す
window.setTimeout(function(){
var reasons = {reason:'rejected', sec:rejectTime};
reject(reasons);
}, rejectTime * 1000);
}
});
var result = document.getElementById('result');
promise.then(function(values){
result.insertAdjacentHTML('afterend',
'<li class="text-success"> after ' + values.sec + ' seconds[' + values.val + ']</li>');
}, function(reasons){
result.insertAdjacentHTML('afterend',
'<li class="text-warning"> after ' + reasons.sec + ' seconds[' + reasons.reason + ']</li>');
});
});
}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment