【发布时间】:2016-05-09 20:50:43
【问题描述】:
鉴于我有一个方法可以执行异步操作并返回在该操作完成时得到解决的承诺 - 我如何确保在该操作完成之前多次调用时我得到相同的承诺。 编辑当我在操作完成后调用它 - 我想为当前操作获得新的承诺..
一种选择是记住调用(memoize),例如通过外部范围内的变量跟踪承诺
var p;
function test() {
if (p) return p;
p = new Promise(res) {
res();
p = null;
}
return p;
}
还有其他更好的解决方案吗?
【问题讨论】:
-
我猜你的实际承诺没有像你的非工作示例中的那样同步解决?
-
不要忘记适当地处理拒绝(以任何方式)
标签: javascript promise