鉴于我有一个方法执行异步操作并返回在该操作完成时获得解析的promise - 如何确保在该操作完成之前多次调用时得到相同的承诺。 操作完成后我打电话给编辑 - 我想获得当前操作的新承诺..
一个选项是记住调用(memoize),例如通过外部范围中的变量跟踪承诺
var p;
function test() {
if (p) return p;
p = new Promise(res) {
res();
p = null;
}
return p;
}
还有其他更好的解决方案吗?
答案 0 :(得分:1)
您在这里使用的方法称为memoization,并且很难提出更好的方法。
您可能想要做的是从函数本身中分离繁琐的位(保存在外部范围,重用,删除)。甚至可以使用library:
[{"key":"value},{"key","value"}]
import reusePromise from 'reuse-promise';
function test() {
return new Promise(function (res) {
res();
});
}
const reusableTest = reusePromise(test);