多次调用方法后返回相同承诺的模式

时间:2016-05-09 20:50:44

标签: javascript promise

鉴于我有一个方法执行异步操作并返回在该操作完成时获得解析的promise - 如何确保在该操作完成之前多次调用时得到相同的承诺。 操作完成后我打电话给编辑 - 我想获得当前操作的新承诺..

一个选项是记住调用(memoize),例如通过外部范围中的变量跟踪承诺

var p;
function test() {
   if (p) return p;
   p = new Promise(res) {
       res();
       p = null;
   }
   return p;
}

还有其他更好的解决方案吗?

1 个答案:

答案 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);