仅当条件匹配时才执行代码,并定期检查Typescript中的值

3hvapo4f  于 2023-01-18  发布在  TypeScript
关注(0)|答案(1)|浏览(96)

我必须执行某段代码,只要if的值与某个值匹配,我还必须定期检查变量的值,即使在某个时间(maxWaitTime)之后,值不相等,我也必须停止检查变量的值,并向用户发送消息。
我现在的代码如下:

const intervalId = setInterval(function () {
  const localStorageArray = JSON.parse(
    localStorage.getItem('myArray') || '[]',
  );

  if (
    !localStorageArray ||
    (localStorageArray && localStorageArray[0] === myCurrentVal)
  ) {
    clearInterval(intervalId);
  }
}, 1000);

// other code

此处other code未等待setInterval中的if条件就被执行。是否因为setInterval不在调用堆栈中?如果我说错了,请更正。我必须在setIntervalif条件内执行上面的other code,否则将停止执行(在区间内),直到达到maxWaitTime。如何实现这一点?

brccelvz

brccelvz1#

if (!localStorageArray)永远不会为真,因此您可以将其删除。
试试这个

let localStorageArray = JSON.parse(localStorage.getItem('myArray') || '[]');
window.addEventListener('storage', (event) => { localStorageArray = JSON.parse(localStorage.getItem('myArray') || '[]') });
const count = Math.max(maxWaitTime / 1000)
const intervalId = setInterval(() => {
  const found = localStorageArray.findIndex(myCurrentVal) === 0;
  const done = --count <= 0;
  if (found || done) clearInterval(intervalId);
  if (found) processOtherCode();
  else alert('I give up');
}, 1000);

相关问题