我有一个返回 promise 的异步函数。该操作应仅执行一次。我希望该函数的所有调用者都返回相同的 Promise,但我不希望一个调用者的 .catch()
影响另一个调用者。我可以克隆一个 promise ,或者以其他方式实现它吗?
最佳答案
but I don't want
.catch()
es of one caller to affect another caller.
他们从不1 这样做(除非您链接了回调,而您没有这样做)。
I want all callers of that function to get back the same Promise
就去做吧。 Promise 是不可变的值2。
Can I clone a promise?
如果您确实需要3 一个将遵循原始 promise 的不同对象(在它实现时实现或在它拒绝时拒绝),您可以使用 then
方法而不用参数:
var clone = promise.then();
console.assert(clone !== promise);
1:假设您使用适当的 promise 库。我想我记得一个库(旧 jQuery?)的例子,其中 then
回调结果改变了 promise 的状态。
2:至少在他们的解决行为中。当然,每个 promise 仍然只是一个对象。
3:你没有。你真的不应该。我只是在回答标题问题,但你应该停止做奇怪的事情。
关于javascript - 我可以克隆一个 Promise 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37063293/