有关await的一个奇怪现象分享

function getData(a) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(a);
    });
  });
}

let count = 0;
async function solve(num) {
    // count += await getData(num);
    let res = await getData(num);
    count += res;
}
solve(1);
solve(2);
setTimeout(() => {
  console.log(count);
}, 1000)

count += await getData(num);
的结果是2
let res = await getData(num);
count += res;
的结果是3
上面那个方式等同于
count = count + await getData(num);
在运行时count其实一直等于的是0 + await getData(num);
所以导致了结果为2的情况,在开发时要注意避免此类情况。

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注