Promise A+ 是前端必须要掌握的一个东西, 在ES6 中已经原生的支持了它.
为什么要使用它?
异步 处理的方法, 正常都是写在回调里面, 如何多个 异步的 方法 需要并行的话, 那么就需要在回调里面嵌套回调, 这样 数量 一多, 就会出现了 " 回调 地狱 ", 而 Promise 正是为了解决这个问题而出现的.
使用情景
同时发送两个Ajax请求,然后要在两个请求都成功返回后再做一件接下来的事,想一想如果只按前面的方式在各自的调用位置去附加回调,这是不是好像也有点难办?
一. 如何使用?
- 新建一个 promise 对象
- 调用 promise 的 then 方法, 调用执行结束的 调用方法
// 1. 新建 promise 对象
var promise = new Promise(function (resolve, reject) {
setTimeout(function(){
resolve(100);
},2000)
})
// 2. 调用
promise.then(function fn1(val){
return val+100
}).then(function fn2(val){//这里为了便于说明给匿名函数加了个名字
alert(val);
})
二. 主流的类库
bluebrid 有浏览器版的, 也有 NodeJs 版本
三.使用情景代码
- 多个URL请求结束之后, 在做接下来的事
//Jquery 的使用方法 ,Jquery1.5+ 支持该功能
var promise1 = $.ajax(url1),
promise2 = $.ajax(url2);
promiseCombined = $.when(promise1, promise2);
promiseCombined.done(onDone);
未完待续...