es6的promise用法详解
es6的promise用法详解
- promise 原理
- promise是es6的异步编程解决方案, 是es6封装好的对象;
- 一个promise有三种状态:Pending(进行中)、Resolved(已完成,又称 Fulfilled)和Rejected(已失败);
- 缺点:一旦执行无法取消;无回掉函数,promise只在内部报错;当处于pending状态时无法监控其是刚开始还是即将结束
用法测试
```javascript
//方法编写
function getjson (num){
var timer=null
var promising=new Promise(function(resolve,reject){
if(!num){
reject("num don't find")
}
timer=setInterval(function(){
if(num<5){
num++
}else{
resolve(num)
clearInterval(timer)
}
},1000)
});
return promising;
}
//调用方式1 成功
getjson(1).then(function(json){
console.log(222)
console.log(json)
},function(error){
console.log(111)
console.log(error)
})
//调用方式2 成功
getjson(1).then(function(json){
console.log(222)
console.log(json)
}).catch(function(error){
console.log(111)
console.log(error)
})
//调用方式3 失败
getjson(1).then(function(json){
console.log(222)
console.log(json)
}).catch(function(error){
console.log(111)
console.log(error)
})
//输出结果是5秒之后打印出222和json的值```
- 注意点
- 必须new promise对象,同时传递resolve,reject两个参数,resolve是成功后的调用,reject是失败后的调用;
- 调用方式2优于调用方式1,理由是Promise 对象的错误具有“冒泡”性质,会一直向后传递,直到被捕获为止。也就是说,错误总是会被下一个catch语句捕获,第二种写法可以捕获前面then方法执行中的错误,也更接近同步的写法(try/catch);
- done()和finally()方法在有的浏览器可能不存在。打印执行后的getjson()对象,在原型里没有找到这两个方法,原因未明;
源码:git@github.com:Frankltf/js-promise.git
最新文章
- mysql数据库学习目录
- PDF 补丁丁 0.5.0.2691 发布(替换字库新增字符映射功能)
- 解读Gartner《2015年度新兴技术成熟度曲线报告》
- jQuery 实现网页图片动态游走,碰到边框反弹
- 01day2
- SGU 180
- pycharm的使用技巧
- java 从jar包中读取资源文件
- C++:类成员函数的重载、覆盖和隐藏区别?
- POJ 2892 Tunnel Warfare (SBT + stack)
- zstu 4214 高楼扔鸡蛋(google 面试题)dp
- MapReduce过程(包括Shuffle)详解
- redis分布式锁实践
- Docker for windows : 安装linux
- file_get_contents(&#39;php://input&#39;) 和POST的区别
- Cocos Creator cc.Event点击触摸事件详解
- javascript五种基本类型
- python--linux上如何执行shell命令
- Linux 安装MongoDB 并设置防火墙,使用远程客户端访问
- 工具类之Mutex
热门文章
- Qt和c/c++connect函数冲突解决方法
- vue(axios)封装,content-type由application/json转换为application/x-www-form-urlencoded
- 浅谈月薪3万 iOS程序员 的职业规划与成长!(进阶篇)
- python基础[16]——解决django连接mysql数据库报错的问题
- ELK学习实验001:Elastic Stack简介
- Unity3D小游戏开发之两个我踩过的坑
- vc++ 监控指定路径下文件变化
- 【退役记】CSP2019 退役记
- Pillow库来着
- Java工程师阅读源码的一些见解