• promise


    概念:Promise主要解决了异步调用互相依赖,就是常说的死亡回调。当你调用一系列异步方法时,使用promise可以让多个操作按照你的想法执行,实现序列化。

    Promise有3种状态:

    1. Pending:进行中
    2. Resolved(Fulfilled):已完成
    3. Rejected:已失败

    Promise构造器接受一个函数作为参数,这个函数有两个参数:resolve,reject,分别代表这个Promise实例成功之后的回调函数和失败之后的回调函数。

        let promise = new Promise(function (resolve, reject) {
            var a = 1
            if (a == 1) {
                resolve(a)
            } else {
                reject(error)
            }
        })
        promise.then(function (value) {
            console.log(value);
        }).catch(function (error) {
            console.log(error);
        })
      // 结果输出 1

     promise多步调用:

        let ajax=function(){
            console.log('执行');
            return new Promise(function(resolve){
                setTimeout(function () {
                    resolve()
                }, 2000);
            })
        };
        ajax()
            .then(function(){
                console.log("第一次then")
                return new Promise(function(resolve){
                    setTimeout(function () {
                        resolve()
                    }, 2000);
                });
            })
            .then(function(){
                console.log("第二次then")
                return new Promise(function(resolve){
                    setTimeout(function () {
                        resolve()
                    }, 2000);
                });
            })
          .then(function(){
              console.log('执行结束')
          })

     捕获错误:

        var promise = new Promise(function (resolve, reject) {
            let a = 7
            if (a < 5) {
                resolve(a)
            } else {
                reject()
            }
        })
        promise.then(function (value) {
            console.log(value++)
            return value
        }).catch(function (error = '出错了') {
            console.log(error)
        })

    案例1:Promise.all 方法 (作用:在指定的所有Promise实例完成后执行)

        let add1 = () => {
            console.log('执行1');
            return new Promise(function(resolve){
                setTimeout(function(){
                    console.log("执行1完成")
                    resolve()
                },2000)
            })
        }
        let add2 = () => {
            console.log('执行2');
            return new Promise(function(resolve){
                setTimeout(function(){
                    console.log('执行2完成')
                    resolve()
                },2000)
            })
        }
        Promise.all([
            add1(),
            add2()
        ]).then(() => {
            setTimeout(() => {
                console.log("执行结束")
            },2000)
        })

    案例2:Promise.race 方法(作用:在指定的所有Promise实例中任何一个实例完成后执行)

        let add1 = () => {
            console.log('执行1');
            return new Promise(function(resolve){
                let timer = setTimeout(function(){
                    console.log("执行1完成")
                    resolve()
                },5000)
            })
        }
        let add2 = () => {
            console.log('执行2');
            return new Promise(function(resolve){
                let timer = setTimeout(function(){
                    console.log('执行2完成')
                    resolve()
                },2000)
            })
        }
        Promise.race([
            add1(),
            add2()
        ]).then(() => {
            setTimeout(() => {
                console.log("执行结束")
                add1 = null
                add2 = null
            },2000)
        })
  • 相关阅读:
    Django Form组件的扩展
    Python TCP与UDP的区别
    Python三次握手和四次挥手
    网络基础之网络协议
    Python 类方法、实例方法、静态方法的使用与及实例
    python深浅拷贝
    2021牛客寒假算法基础集训营1 题解
    01 Trie 专题
    MOTS:多目标跟踪和分割论文翻译
    牛客巅峰赛S2第6场题解
  • 原文地址:https://www.cnblogs.com/rickyctbur/p/11570257.html
Copyright © 2020-2023  润新知