【发布时间】:2019-12-16 03:42:09
【问题描述】:
awaitPromise 既不解决也不拒绝(从不解决/未完成)会导致内存泄漏吗?
我在查看带有 slorber/awesome-debounce-promise 的 React hooks 时对此感到好奇,它创建了新的 Promise,但只解决了最后一个 Promise,因此留下了许多/最不稳定/未实现的内容。
【问题讨论】:
-
有趣的问题。我认为理论上不应该,因为它应该继续检查承诺是否解决,如果没有,请等待并再次检查。不过,结果可能会因目标而异,因为这取决于如何原生处理和/或最终填充 promise。
-
解除承诺不应导致它永远不会被解决/拒绝。只是你忽略了它们。所以它不应该影响记忆。例如,如果您创建了一个 Promise 并且从不费心等待或附加到它的 thenable 上,那么垃圾收集器只会清理它们。
-
@Keith 根据描述和使用示例,它似乎在等待创建的每个新承诺。 "每次调用都会返回一个promise",
const result = await searchAPIDebounced(text);, "只有最后一次调用返回的promise会被解析"(它们也不会被拒绝)。跨度> -
不,他们都会解决或拒绝。 debouce 所做的只是返回最后一个承诺。描述是误导性的。写得不好的承诺可能无法解决/拒绝,但这将是一个不同的问题..
-
他在使用
awesome-imperative-promise,所做的只是创建一个包装承诺,真正的物理承诺仍然会拒绝/解决。
标签: javascript async-await es6-promise