我理解的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 相当于一个状态机,里面保存一个未来才会得到的结果(resolve
和reject
)。其中两者状态的改变只会从pending
变成resolve
或者pending
变成resolve
一旦这两种情况其中的一点发生,就不会再次改变
缺点
- 无法取消Promise 新建对象的时候立刻执行。
Promise.prototype.then用法
上面已经说过`then`的用法。这里的`then`也支持链式调用.