在 JavaScript 中,for-in 循环用于遍历对象的属性。由于 for-in 循环是异步的,因此在 for-in 循环结束之前,代码可能会继续执行。如果您需要等待 for-in 循环完成后再执行其他操作,则可以使用 Promise 或 async/await。

使用 Promise:

function waitUntilForInEnd(obj) {
  return new Promise(resolve => {
    let count = 0;
    for (let key in obj) {
      count++;
    }
    const intervalId = setInterval(() => {
      if (count === 0) {
        clearInterval(intervalId);
        resolve();
      }
    }, 10);
  });
}

(async () => {
  const obj = {a: 1, b: 2, c: 3};
  for (let key in obj) {
    console.log(key);
  }
  await waitUntilForInEnd(obj);
  console.log('for-in end');
})();

使用 async/await:

function waitUntilForInEnd(obj) {
  return new Promise(resolve => {
    let count = 0;
    for (let key in obj) {
      count++;
    }
    const intervalId = setInterval(() => {
      if (count === 0) {
        clearInterval(intervalId);
        resolve();
      }
    }, 10);
  });
}

(async () => {
  const obj = {a: 1, b: 2, c: 3};
  for (let key in obj) {
    console.log(key);
  }
  await waitUntilForInEnd(obj);
  console.log('for-in end');
})();
``
js 等待 forin 结束

原文地址: http://www.cveoy.top/t/topic/ckkn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录