html 5 promiseの使用
2442 ワード
promiseの目的はcallbackのネストを減らし、コードのメンテナンス性を高めることです.1つの抽選の例を見ると、抽選ごとに1秒、計5回かかり、1~10のランダム数を生成し、5より大きいと当選する.
<script>
function drawPrize(){
var defer = Promise.defer()
setTimeout(function(){
var random = parseInt(Math.random() * 10);
if(random>5){
defer.resolve({msg: 'gt 5', score: random});
}else{
defer.reject({msg: 'lte 5', score: random});
}
},1000);
return defer.promise;
}
for(var i=1;i<6;i++){
// drawPrize().then(function(data){
// console.log(data);
// console.log(' ');
// }).catch(function(data){
// console.log(data);
// console.log(' ');
// });
drawPrize().then(function(data){
console.log(data);
console.log(' ');
},function(data){
console.log(data);
console.log(' ');
});
}
</script>
</code></pre>
<p> catch , then 。</p>
<p>Promise.defer() , new Promise() 。</p>
<p> :</p>
<pre><code>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<title/>
<script>
function drawPrize(){
return new Promise(function(resolve,reject){
setTimeout(function(){
var random = parseInt(Math.random() * 10);
if(random>5){
resolve({msg: 'gt 5', score: random});
}else{
reject({msg: 'lte 5', score: random});
}
},1000);
});
}
for(var i=1;i<6;i++){
// drawPrize().then(function(data){
// console.log(data);
// console.log(' ');
// }).catch(function(data){
// console.log(data);
// console.log(' ');
// });
drawPrize().then(function(data){
console.log(data);
console.log(' ');
},function(data){
console.log(data);
console.log(' ');
});
}
</script>
</code></pre>
<br/>
<br/>
</div>
</div>
</div>
</div>