Uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not ...

276 阅读1分钟
      let res = await t.getUserDept(ele);
      swap.push(res.deptName);
      if (map.get(res.deptName) != undefined) {
        let current = map.get(res.deptName);
        map.set(res.deptName, current + ed[ele]);
      } else {
        map.set(res.deptName, ed[ele]);
      }
    });
    
     console.log("map ==> ");
        console.log(map);
        console.log(map.keys())
        for (let key of map.keys()) {
          resultArray.push({
            deptName: key,
            consumptionAmount: toDecimal2(map.get(key)),
            taxAmount: toDecimal2(map.get(key) * 1.06)
          })
        }
      console.log(resultArray)

下面的代码出会写typeError:Caller错误

但是我加了setTimeout后 就不会出现了, 可能是await t.getUserDept(ele);读取用时过长

后面改为用promise去获取就可以了

return new Promise((resolve, reject) => {
      setTimeout(() => {
        console.log("map ==> ");
        console.log(map);
        console.log(map.keys())
        for (let key of map.keys()) {
          resultArray.push({
            deptName: key,
            consumptionAmount: toDecimal2(map.get(key)),
            taxAmount: toDecimal2(map.get(key) * 1.06)
          })
        }
        console.log(resultArray)
        resolve(resultArray)
      }, 500)
    }) 
  }