ES6 Promise 异步1

- 异步 和 同步

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就是赛跑的意思
  • 哪个结果获得的快,就返回那个结果
  • 不管结果本身是成功状态还是失败状态

你可能感兴趣的:(ES6 Promise 异步1)