问答

js some() 是同步方法吗?

作者:admin 2021-06-22 我要评论

some遍历数组的时候,符合某个条件跳出循环,并返回值 如果不符合在递归调用 recursionModel(parentModel, selectMesh) { let flag = false console.log(1) parent...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

some遍历数组的时候,符合某个条件跳出循环,并返回值
如果不符合在递归调用

   recursionModel(parentModel, selectMesh) {
      let flag = false
      console.log(1)
      parentModel.children.some((child, index) => {
        if (child === selectMesh) {
          // console.log('*****',flag)
          // flag = true
          console.log('return true')
          console.log(3)
          return true
        } else {
         return this.recursionModel(child, selectMesh)
        }
      })
      console.log(2)
      console.log("------------------"+flag)
      return flag

但是结果返回的是false
image.png

不知道什么原因导致的,求解??

###
recursionModel(parentModel, selectMesh) {
  return parentModel.children.some(child => {
    return child == selectMesh || this.recursionModel(child, selectMesh)
  })
}
###

首先,Array.prototype.some 一定是同步方法,标红的是进入递归后的输出。
Artboard.png

其次,flag 变量需要赋值:

...
flag = parentModel.children.some((child, index) => {
...

最后,recursionModel方法其实缺一个递归出口,可以这么补充:

recursionModel(parentModel, selectMesh) {
  if(!Array.isArray(parentModel.children)) return false;
...

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • js some() 是同步方法吗?

    js some() 是同步方法吗?

  • 自定义hook请求的问题

    自定义hook请求的问题

  • 关于二维码活码系统的一些本地测试问题

    关于二维码活码系统的一些本地测试问题

  • vue keepAlive因为路由不在一个js文件

    vue keepAlive因为路由不在一个js文件

腾讯云代理商
海外云服务器