aps*_*nce 3 javascript promise
我有一个异步函数返回一个诺言。该操作只能执行一次。我希望该函数的所有调用者都返回相同的Promise,但我不希望.catch()一个调用者的es影响另一个调用者。我可以克隆一个承诺,还是以其他方式实现它?
但我不希望
.catch()一个呼叫者的声音影响另一个呼叫者。
他们永远不会做1(除非您已链接回调,否则就不会)。
我希望该函数的所有调用者都返回相同的Promise
去做就对了。承诺是不可变的值2。
我可以克隆诺言吗?
如果您确实需要3个将遵循原始诺言的独特对象(当履行时实现,则履行;拒绝时履行,则拒绝),可以使用then不带参数的方法:
var clone = promise.then();
console.assert(clone !== promise);
Run Code Online (Sandbox Code Playgroud)
1:假设您使用适当的Promise库。我想我记得一个库(旧的jQuery?)的情况,其中then回调结果改变了Promise的状态。
2:至少在解决行为上。每一个承诺仍然只是一个目标。
3:你没有。你真的不应该。我只是在回答标题问题,但您应该停止做奇怪的事情。