学习笔记:ES6之Promise
来源:互联网 发布:淘宝怎么更改支付宝 编辑:程序博客网 时间:2024/05/28 17:08
(1)Promise是异步操作的一种解决方案
(2)什么是异步?
先执行什么,后执行什么
(3)Promise的作用
(4)Promise的基本用法
//基本定义的调用
letajax=function(callback){
console.log('执行');
setTimeout(function(){
callback&&callback.call();
},1000);
};
ajax(function(){
console.log('timeout1');
})
//Promise的调用--一次调用
letajax=function(){
console.log('执行');
Return newPromise(function(resolve,reject){
setTimeout(function(){
resolve();//
},1000);
})
};
ajax().then(function(){
console.log('promise','timeout2');
})
//Promise的调用--连续调用
letajax=function(){
console.log('执行3-1');
Return newPromise(function(resolve,reject){
setTimeout(function(){
resolve();
},1000);
})
};
ajax()
.then(function(){
return newPromise(function(resolve,reject){
console.log('执行3-2');
setTimeout(function(){
resolve();
},2000);
})
})
.then(function(){
console.log('promise','执行3-3');
})
//捕获异常错误
letajax=function(num){
console.log('执行4');
return newPromise(function(resolve,reject){
if(num>5){
resolve();
}else{
throw newError('出错了');
}
})
};
ajax(6).then(function(){
console.log('log',6);
}).catch(function(err){
console.log('catch',err);
});
ajax(3).then(function(){
console.log('log',3);
}).catch(function(err){
console.log('catch',err);//捕获到错误
})
//所有图片加载完再加载页面
//加载图片
functionloadImg(src){
return newPromise((resolve,reject)=>{
letimg=document.createElement('img');
img.src=src;
//图片加载成功
img.onload=function(){
resolve();
};
//图片加载失败
img.onerror=function(){
reject(err);
}
})
}
//将图片加载到页面上
functionshowImgs(imgs){
imgs.forEach(function(img){
document.body.appendChild(img);
})
}
Promise.all([
loadImg('图片地址'),
loadImg('图片地址'),
loadImg('图片地址')
]).then(showImgs)
Promise.all():只有在all()里面的内容发生改变的时候且全部加载完成,就会触发Promise.all()这个实例
Promise.race():只要race()里面的内容有一个加载完成,就可以触发Promise.race()实例
//只要有一张图片加载完就加载页面
//加载图片
functionloadImg(src){
return newPromise((resolve,reject)=>{
letimg=document.createElement('img');
img.src=src;
//图片加载成功
img.onload=function(){
resolve();
};
//图片加载失败
img.onerror=function(){
reject(err);
}
})
}
functionshowImgs(imgs){
imgs.forEach(function(img){
letp=document.createElement('p');
p.appendChild(img);
document.body.appendChild(p);
})
}
Promise.race([
loadImg('图片地址'),
loadImg('图片地址'),
loadImg('图片地址')
]).then(showImgs);
- es6学习笔记之Promise
- 学习笔记:ES6之Promise
- es6 标准 Promise 学习笔记
- ES6 Promise对象学习笔记
- ES6学习之promise对象
- 11、异步操作之Promise—ES6学习笔记
- ES6之Promise学习之路
- ES6 Promise对象的学习笔记
- ES6 学习之promise 基本用法
- ES6 Promise小笔记
- 学习 ES6 Promise
- es6之promise被坑记
- es6之promise被坑记
- 11、ES6 之Promise
- ES6之Promise对象
- ES6之Promise
- ES6之promise
- ES6学习笔记(七)--Generator函数与Promise对象
- 一直用PDO,PHP中操作MYSQL数据库常用函数还记得不
- S5PV210刷机方法
- MySQL explain执行计划解读
- 剑指offer 链表题最佳解汇总 Python
- 欧拉函数(或者容斥)-HDU5514
- 学习笔记:ES6之Promise
- Linux内核进程调度
- Redis集群方案大全
- 前端性能优化+CDN优化
- datagrid控制分页js代码
- JAVA设计模式之单例模式
- Solr的安装及配置
- 极光推送服务器端代码(java服务器后台向手机端自定义推送消息)
- XOR加密--PHP版