vue.js 异步API调用后在新选项卡中打开窗口

aydmsdu9  于 2023-02-05  发布在  Vue.js
关注(0)|答案(2)|浏览(133)

我想调用这个函数,然后在用户单击我的VueJS应用程序中的一个元素后,在新选项卡中打开一个页面,类似于以下内容:

const someFunction = async () => {
   const value = await api.someCallToApi();
   window.open('https://example.com', '_blank').focus();
}

我不被允许这样做,可能是由于等待导致window.open不是用户操作(?)的直接结果!由于我的应用程序的设置方式,API调用的顺序和在新标签页中打开窗口是相关的。
处理这一问题的可靠和现代的方式是什么?

kzipqqlq

kzipqqlq1#

在理想情况下,所有异步函数都已经返回Promise。但可能仍有旧库使用await。您可以创建如下所示的Promise来 Package await函数:

const delay = (ms) => new Promise(resolve => setTimeout(resolve.bind(null, ms/1000), ms));

delay(3*1000).then((sec) => alert(sec + " seconds passed"));
lstz6jyr

lstz6jyr2#

在API调用解析后,模拟一个类似下面的click事件:

const someFunction = async () => {
  const value = await api.someCallToApi();
  const link = document.createElement('a');
  link.href = 'https://example.com';
  link.target = '_blank';
  link.click();
  link.remove();
}

相关问题