美文网首页
ES6 Promise 异步1

ES6 Promise 异步1

作者: 崩鲨卡拉卡 | 来源:发表于2019-02-21 10:34 被阅读0次
    - 异步 和 同步

    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

          本文链接:https://www.haomeiwen.com/subject/dlshyqtx.html