【发布时间】:2020-02-28 23:38:27
【问题描述】:
我有三个返回对象的异步函数。如果其中一个函数不成功,它们将返回一个空对象。问题是,如果我尝试 Promise.race 这些函数,其中一个不成功的函数可能会先完成并返回一个空对象。我的 Promise 代码如下所示:
let product = await Promise.race([
get_info_1(code),
get_info_2(code),
get_info_3(code)
])
是否可以在不停止 Promise.race 的情况下停止其中一个异步 get_info 函数的运行?或者我可以以某种方式告诉 Promise.race 等到返回的对象包含一些信息?
【问题讨论】:
-
你到底想做什么?是否要从第一个成功解析的 Promise 中检索数据?
-
@Rengers 是的,这是一种更好的表达方式。
-
您正在寻找
Promise.any(developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…)。这仍然是实验性的,可能在您的环境中不受支持。在这种情况下,您可以使用 polyfill。 -
这能回答你的问题吗? Get first fulfilled promise