Fork me on GitHub

Promise


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script>
var p=new Promise(function(resolve,reject){
var s=Math.random()
setTimeout(function(){
if(s>0.8){
resolve('success')
}
else(
reject("fail")
)
},1000)
})
console.log(p)
p.then(function(result){
console.log(result);
}).catch(function (err) {
console.log(err);
})
</script>


1
2
3
4
5
因为Promise是一个构造函数,所以我们使用了new操作符来创建promise。

构造函数Promise的参数是一个函数(暂时叫它func),这个函数(func)有两个参数resolve和reject,它们分别是两个函数,这两个函数的作用就是将promise的状态从pending(等待)转换为resolved(已解决)或者从pending(等待)转换为rejected(已失败)。

创建后的promise有一些方法,then和catch。当然我们也可以人为的在Promise函数上添加一些满足我们自己需求的方法,方便每一个promise对象使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
es6


let p=new Promise((resolve,reject)=>{
setTimeout(()=>{
Math.random()>0.6?resolve("success"):reject("fail")
})
},1000)
console.log(p);

p.then((result)=>{
console.log(result);
}).catch((err)=>{
console.log(err);
})
请我喝杯可乐吧