我理解的promise

我理解的Promise

什么是Promise

一种异步编程的解决方案,相比传统的——回调函数和事件——更加优雅


如何使用

一个简单的promise

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 var zone1 = setTimeout(function(num) {
if (num > 6) {
return true;
} else {
return false;
}
}, 5000)
var zone = function(num) {
return new Promise(function(resolve, reject) {
if (zone1) {
resolve(console.log("zone1"));
} else {
reject(console.log("zone2"));
}

})
}

zone(11).then(setTimeout(function(){console.log("hello promise")},2000))

// 这里promise 接受两个参数一个resolve,一个reject
其中两个状态,resolve 一个reject.
当接收到resolve 或reject 其中两个状态中一个。触发回调=> 这里是一个定时函数。

这里的promise 相当于一个状态机,里面保存一个未来才会得到的结果(resolvereject)。其中两者状态的改变只会从pending变成resolve或者pending变成resolve一旦这两种情况其中的一点发生,就不会再次改变

缺点

  • 无法取消Promise 新建对象的时候立刻执行。

Promise.prototype.then用法

上面已经说过`then`的用法。这里的`then`也支持链式调用.