1,使用场景为需要等待前两次请求回来的参数,才能进行下一次请求
<script>
function getJSON(url) {
return new Promise(function(resolve, reject) {
$.get(url, function(data) {
resolve(data);
})
})
}
function renderAll() {
//如果把all改为race,则只要一个resolve或者reject被触发就会调用then方法,只传过去一个参数,不合并别的response数据
return Promise.all([getJSON('http://106.14.144.79/element/cer.php'), getJSON('http://106.14.144.79/element/cer.php')]);
}
//当全部请求完毕之后才会调用then方法,value为数组,一个元素为一个response数据。
renderAll().then(function(value) {
console.log(value);
//这里获得了前两次请求的参数之后可以进行第三次的请求
})
</script>
2,让请求和响应逻辑处理分离
<script>
function getJSON(url) {
return new Promise(function(resolve, reject) {
$.get(url, function(data) {
if(true){
//触发then里的第一个function
resolve(data);
}else{
//触发then里的第二个function
reiect('err info')
}
})
})
}
getJSON('http://106.14.144.79/element/cer.php').then(function(response) {
console.log(response);
},function(err){
console.log(err);
})
</script>
详细讲解请参考: promise详细教程