javascript - 我可以克隆一个 Promise 吗?

标签 javascript promise

我有一个返回 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/

相关文章:

javascript - 无法将默认值绑定(bind)到 knockoutJS 中的下拉菜单

javascript - 更新 Svelte : Package subpath './compiler.js' is not defined by "exports" 后生成错误

node.js - 接收 Promise <Pending> 而不是值

javascript - 正确使用 Promise.resolve

AngularJS 单元测试基础 : testing for a $q deferred object's resolution and rejection in a service

javascript - Webpack + Symfony encore - 如何添加库

javascript - 使用本地 AJAX 请求解析 JSON 数据

javascript - 如何在PHP中为动态添加/删除输入字段创建错误处理程序

javascript - 有没有办法保证 `Promise.all` 在内部 promise 的 `then` 链之后解析?

javascript - 如何识别以下代码模式