• 我不知道的promise


    • promise在resolve之后 再抛出错误并不会被捕获,等于没有抛出,个人理解是状态改变之后就不会再次改变。

    • 错误具有冒泡的特性,会一直向后传递,直到被捕获为止,但是不会冒泡到全局。跟传统的try catch 语句不同的是,如果没有使用catch 语句指定错误处理的回调函数,promise 对象抛出的错误不会传递到外层代码

    • Catch方法返回的还是一个promise 对象,因此后面还可以接着调用then方法,如果没有报错则跳过该catch 方法,需要注意的是,如果在catch 语句以后再抛出错误则无法捕获。

    • done 方法总是出于回调链的微端,保证抛出任何可能出现的错误(向全局)

    • 值穿透:如果在then方法或是catch方法中传入的不是函数则会穿透,像是没有传入。

    • 实现并行,不好的做法是使用forEach遍历执行promise,可以使用Promise.all

      getAsyncArr().then(promiseArr => {
          return promise.all(promiseArr);
      })
      .then(res => console.log(res))
      
    • 实现串行执行,那我们可以利用reduce来处理串行执行

      var pA = [
      function() {return new Promise(resolve => resolve(1))},
      function(data) {return new Promise (resolve(1 + data))}
      ]
      pA.reduce((prev, next) => prev.then(next).then(res=>res), Promise.resolve()).then(res => console.log(res))
      
  • 相关阅读:
    vpp + vxlan
    vpp + frrouting
    VPP + vxlan
    dpdk: Unsupported PCI device 0x19e5:0x0200 found at PCI address 0000:05:00.0
    How-to: Build VPP FD.IO with Mellanox DPDK PMD on top CentOS 7.7 with inbox drivers.
    vpp[73384]: register_node:485: process stack: Invalid argument (errno 22)
    鲲鹏920上vpp--dpdk编译
    编译frr--python版本问题--Python-3.7.7
    安装vpp
    Go排序
  • 原文地址:https://www.cnblogs.com/nanshanlaoyao/p/6666677.html
Copyright © 2020-2023  润新知