typescript 我可以创建一个异步函数的闭包作为promise传递吗

fhg3lkii  于 2023-05-01  发布在  TypeScript
关注(0)|答案(2)|浏览(91)

我有一个somedataMap : Map<string, Promise<SomeData>>,我想填充。
我还有一个异步函数async function getSomeData(someIdentifier:string): Promise<SomeData>,我想用它作为Map中的值
显然,如果我做了类似somedataMap.set("someId", getSomeData("someId"))的事情,那么getSomeData中的代码就会被调用,我不想这样做,直到 * 也许 * 以后。将getSomeData函数 Package /关闭为Promise的最佳方法是什么,这样我就可以存储它或将它传递给其他函数?

gxwragnw

gxwragnw1#

您可以使用任何一个

somedataMap: Map<string, () => Promise<SomeData>>

somedataMap.set("someId", () => getSomeData("someId"))


按原样使用它,稍后,当你想从Promise接收值时,请执行以下操作:

await somedataMap.get("someId")
hlswsv35

hlswsv352#

异步函数 always 返回promise。你不需要 Package 它。快打电话。

const getSomeData = async (id) => {
  return 'some data';
};

const somedataMap = new Map();

getSomeData('x').then(data => {

  console.log(`data is "${data}"`);

  somedataMap.set("someId", data);

  console.log( somedataMap.values().next().value );

});

相关问题