- 异步 和 同步
promise对象:
- 用同步方式书写异步代码
- promise 让异步写起来,像写同步一样流程,不必一步一步写嵌套回调函数
- 大大提升可读性,对于多层嵌套回调的函数很方便
- 充当 异步操作和回调函数的中介 ,使得一步操作 具备同步操作的接口
Promise 也是一个构造函数:
- 接受一个回调函数f1作为参数,f1里面是异步操作的代码
- 返回的p1就是一个 Promise 实例
- 所有异步任务都返回一个 Promise 实例
- Promise 实例有一个then方法,用来指定下一步的回调函数
Promise 的异步:
- Promise.all(promiseArray)方法
- 将多个Promise对象实例包装,生成并返回一个新的Promise实例
- promise数组中所有的promise实例都变为resolve的时候,该方法才会返回
- 并将所有结果传递results数组中
- promise数组中任何一个promise为reject的话,则整个Promise.all调用会立即终止,并返回一个reject的新的promise对象
var p1 = Promise.resolve(1),
p2 = Promise.resolve(2),
p3 = Promise.resolve(3);
Promise.all([p1, p2, p3]).then(function (results) {
console.log(results); // [1, 2, 3]
});
基于 $.ajax( )
请求的异步
Promise.all([$.ajax(),$.ajax()].then(
results=>{
alert("成功了")
}),err=>{
alert("失败了")
} )
例:Promise.all() 常用案例模型:
Promise.all([
$.ajax({url:'promise/json.txt',dataType:'json'}),
$.ajax({url:'promise/json.txt',dataType:'json'}),
$.ajax({url:'promise/num.txt',dataType:'json'}),
]).then(results=>{
//结构赋值
let [json,arr,num]=results;
alert("成功了")
console.log(json,arr,num)
},err=>{
alert("失败了")
})
Promise.race([p1, p2, p3])
- Promse.race就是赛跑的意思
- 哪个结果获得的快,就返回那个结果
- 不管结果本身是成功状态还是失败状态
网友评论