promise是什么?
- 主要用于异步计算
- 可以将异步队列化,按照期望的顺序执行,返回符合预期的结果
- 可以在对象之间传递和操作promise,帮助处理队列信息
- 在没有promise时,处理异步是通过纯粹的回调函数形式处理,很容易进入回调地狱中,剥夺了return的能力,问题可以解决,但是难以读懂,嵌套层次太深,不好维护
为什么会有promise?
为了避免界面冻结(任务)
- 同步:假设你是一个服务员,你只能服务完一个对象,在接着才能服务另一个对象
- 异步:你妈妈同时叫你姐姐和你吃饭,你妈妈叫完之后,不管你来不来,又去叫你姐姐,不需要等待你的答复,异步就是不需要等到结果。
promise实例
var promise = new Promise(function (resolve, reject){
if(/如果异步操作成功/){
resolve(value)//成功
}else{
reject(error);//失败
}
})
promise.then(function(value){
//成功success
}),function(){
//失败failure
}
promise支持链式写法
promise.prototype.then和promise.prototype.catchd都支持链式的写法。
promise.then(function(value){
//成功
}).then(function(value){
//用新返回的promise对象可以继续使用promise的回调
})