在 promise resolve 之后在 setInterval 中使用 open.window

问题描述 投票:0回答:0

我有一个 chrome 扩展程序,我希望用户在单击按钮时导航到某个页面,我从服务器获取 URL,所以我需要等待 promise 解决以知道将用户重定向到哪里。 我尝试在 promise 的

then
部分执行此操作,但意识到它不起作用,因为窗口打开仅在由于用户操作而在主线程上触发时才起作用(如 here 所解释)。

我想出的一个解决方案是使用

setInterval
并且出于某种原因它有效。我不知道为什么,很想更好地理解,也许它是片状的,我不应该使用它。

我的代码看起来有点像这样

const onClick = () => {
  const urls: string[] = []
  somePromise.then((url) => {
    urls[0] = url
  })

  setInterval(() => {
    const possibleURL = urls[0];
    if (possibleURL) {
      window.open(possibleURL, '_top')
    }
  }, 500)
}

提前致谢

javascript browser promise setinterval
© www.soinside.com 2019 - 2024. All rights reserved.