【发布时间】:2020-05-26 07:37:35
【问题描述】:
我有一个系统,我需要来自服务器的 id 来处理事件。如果/当第一个事件发生时,我应该只获取 id,但在那之后,我需要为每个后续事件使用相同的 id。我知道如何使用 async-await 等,所以我有一些这样的代码
var id = "";
async function handleEvent(e) {
if (! id ) {
let response = await fetch(URL)
if (response.ok) {
let json = await response.json();
id = json.id ;
}
}
// use id to handle event
}
但我的问题是在收到响应之前我可能会收到多个事件,因此我会收到多个重叠调用来获取新的 id。
我怎样才能对handleEvent进行多个异步调用,第一个处理获取以及任何后续调用等待它完成以访问结果?
【问题讨论】:
-
我认为这就像某种身份验证令牌?
-
这是一个资源令牌,不是身份验证令牌,而是类似的想法。我只需要取一个。
-
你可以用链式 .then 创建一个全局 Promise 来保证对 handleEvent 的累积调用的顺序,但你真的不应该这样做。你真的应该使用handleEvent返回的Promise。而你真正想要的是中止不是吗?