zoukankan      html  css  js  c++  java
  • 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)
        })
  • 相关阅读:
    Single Image Dehazing via Conditional Generative Adversarial Network(CVPR2018-图像去雾)
    STF-GAN:Recovering Realistic Texture in Image Super-resolution by Deep Spatial Feature Transform (CVPR2018)
    os 模块
    Pytorch-get ready with me
    Python学习(第七章)
    Python学习(第六章)
    pytorch与opencv 安装(Linux)
    Python学习(第五章)
    Python学习(第四章)
    Python学习(第三章)
  • 原文地址:https://www.cnblogs.com/rickyctbur/p/11570257.html
Copyright © 2011-2022 走看看