• promise基础


    promise之前有些库在推进这个事情,也有很多代码在用这个,es6将promise作为标准提出来,这是一个非常好的事情,就是把之前一些,大家很向往的写法,概念,真正的标准化,标准化之后大家再写就没什么后顾之忧了,因为他真正的成为一个标准。
    1、Callback Hell
    promise出来的目的就是把callback hell把他干掉,因为在promise之前,这个callback hell是非常烦人的。因为异步这个事情都有callback。
    之前的callback
    function loadImg(src, callback, fail){
      var img = document.createElement('img');
       img.src = src;
      img.onload = function(){
        callback(img);
      }
      img.onerror = function(){
        fail();
      }
    }
    
    var src = 'https://erp.superboss.cc/resources/css/build/images/login/login-title.png';
    
    loadImg(src, function(img){ 
      console.log(img.width);
    },function(){
      console.log('failed');
    })

    发送一个请求,就是一个异步的过程,需要用callback,图片成功之后怎么样,图片失败之后怎么样。成功之后拿到数据,可能还会写很长很长的一段代码,可读性非常的不友好,也没法合理的去划分这个步骤,promise就可以解决这个问题。





    2、Promise语法
    function loadImg(src) {
      const promise = new Promise(function (resolve, reject) {
        var img = document.createElement('img');
        img.onload = function(){
          resolve(img);
        }
        img.onerror = function(){
          reject();
        }
        img.src = src;
      })
      return promise;
    }

    这里只传了src一个参数,然后new了一个promise的实例。然后return promise这个实例。new Promise里面传了一个函数,函数里面有两个参数,其他跟之前一样。看上去很复杂,往往封装的复杂,都是为了更简单的用。

    let result = loadImg('https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=1370968418,3643736858&fm=173&app=49&f=JPEG?w=218&h=146&s=23B47B2339C0EC9281DD01DA0300C0B0');
    
    result.then(function(img){
      console.log(img.width);
    }, function(){
      console.log('failed')
    })
    
    result.then(function(img){
      console.log(img.height);
    })

    下面这个是怎么用。第一个参数是成功,第一个参数是失败。这个result.then可以用多个,打印高度,打印宽度,打印面积,打印地址。这个,,,一个点的内容干一件事,一个点的内容干一件事,分开了,分的清晰明了。分开就好说了,可以集成拓展。

    总结:
    1、new Promise实例,而且要return
    2、new Promise时要传入函数,函数有resolve,reject
    3、成功时执行resolve(),失败时执行reject()
    4、then 监听结果
  • 相关阅读:
    网络相关配置
    RestTemplate 工具类以及拦截器配置打印调用日志
    Redis(2)九大数据类型及落地案例
    JUC(7)ThreadLocal
    JUC(5)原子类
    JUC(6)LockSupport
    JUC(4)Volatile
    JUC(3)Java内存模型JMM
    JUC(1)说说Java“锁”事
    JUC(2)线程中断机制
  • 原文地址:https://www.cnblogs.com/wzndkj/p/10958919.html
Copyright © 2020-2023  润新知