es6(13)--Promise

 //Promise

 {
//原始方法
let ajax=function(callback){
console.log('执行')
setTimeout(function(){
callback&&callback.call()
},1000)
}
ajax(function(){
console.log('timeout1')
})
}
{
//使用Promise
let ajax=function(){
console.log('执行2')
//new Promise(function(resolve,reject){})
//resolve:要执行下一步的操作
//reject:要中断当前的操作
return new Promise(function(resolve,reject){
setTimeout(function(){
resolve();
},1000)
})
}
ajax().then(function(){
console.log('Promise','timeout2')
})
}
{
//使用Promise
let ajax=function(){
console.log('执行3')
return new Promise(function(resolve,reject){
setTimeout(function(){
resolve();
},1000)
})
};
ajax()
.then(function(){
return new Promise(function(resolve,reject){
setTimeout(function(){
resolve();
},2000)
})
}).
then(function(){
console.log('timeout3')
})
}
{
let ajax=function(num){
console.log('执行4');
return new Promise(function(resolve,reject){
if(num>5){
resolve();
}else{
throw new Error('出错了')
}
})
}
ajax(3).then(function(){
console.log('log',6);
}).catch(function(err){
console.log(err)
})
}
{
//所有图片加载完了再添加到页面
function loadImg(src){
return new Promise((resolve,reject)=>{
let img=document.createElement('img');
img.src=src;
img.onload=function(){
resolve(img);
}
img.onerror=function(err){
reject(err);
}
})
}
function showImgs(imgs){
imgs.forEach(function(img){
document.body.appendChild(img);
})
}
//Promise.all把多个promise实例变成一个实例
Promise.all([
loadImg('..'),
loadImg('..'),
loadImg('..'),
]).then(showImgs)
}
{
//有一个图片加载完就添加到页面上
function loadImg(src){
return new Promise((resolve,reject)=>{
let img=document.createElement('img');
img.src=src;
img.onload=function(){
resolve(img);
}
img.onerror=function(err){
reject(err);
}
})
}
function showImas(img){
let p=document.createElement('p');
p.appendChild(img);
document.body.appendChild(p);
}
//有一个实例发生改变就先加载
Promise.rase([
loadImg('..'),
loadImg('..'),
loadImg('..'),
]).then(showImgs)
}
上一篇:Spring Boot开发MongoDB应用实践


下一篇:84. Spring Boot集成MongoDB【从零开始学Spring Boot】