在导航之前,在回调中更改链接的href onclick,或者等待承诺解决后再进行链接导航

时间:2019-07-05 08:13:12

标签: javascript html hyperlink anchor

我允许用户从我的应用程序下载文件。这些文件是私有文件,需要经过身份验证才能访问它们。

当前,前端从服务器请求一个短暂的令牌,并将其附加到URL,以便服务器可以验证授权用户是否正在尝试丢弃它。该令牌在后端生成,并且每次用户想要下载文件时都需要获取一个新令牌。基于此新令牌,确定下载URL。

这会导致一些问题:

  1. 由于除非用户单击下载,否则我没有可用的URL,因此默认情况下,我无法使链接href指向正确的文件路径。
  2. 我希望用户单击下载链接,然后下载便会开始。这就是为什么我试图寻找一种在单击后设置链接href的方法。我将以一个空的href开头,然后在onclick上设置正确的href并导航,这将开始下载。 This would be fine if there was no asynchronous call involved,但在这里,我必须等待令牌,然后更改href才能继续导航。

总而言之,我试图了解是否存在一种方法来暂停事件并在令牌可用后恢复它。如果我阻止Default,是否有某种方法可以恢复Default。 也许是,我想要的功能是在导航到使用链接之前等待承诺解决。

一些替代方法:

  1. 提供一个用于“生成下载链接”的按钮,单击此按钮,获取下载令牌,并创建一个具有适当href的新链接并显示在UI上。用户现在可以单击此链接来下载文件。
  2. 单击原始链接后,请阻止Default,获取令牌,创建临时链接,然后以编程方式单击此临时链接。
  3. 当承诺返回时,使用window.open。

0 个答案:

没有答案