gpt4 book ai didi

javascript - 在循环内 promise 后返回数组

转载 作者:行者123 更新时间:2023-11-30 14:29:54 24 4
gpt4 key购买 nike

我试图在运行一个循环并每次都调用 promise 后汇总响应。但是,该函数不会等待所有 promise 完成并返回未定义。

getAllPluginImpls(): DesktopPluginDefinitionImpl[] {
let pluginArray: DesktopPluginDefinitionImpl[] = [];
let promises = [];
Array.from(this.pluginMap.keys()).forEach(id =>
promises.push(this.pluginManager.findPluginDefinition(id).then(
def => {
console.log("id");
console.log(id);
console.log("def");
console.log(def);
let pluginImpl = def as DesktopPluginDefinitionImpl;
pluginArray.push(pluginImpl);
}
)
)
);
Promise.all(promises).then(s => {
console.log("end reached :(");
console.log(pluginArray);
return pluginArray;
});

}

最佳答案

首先,您应该返回 Promise<DesktopPluginDefinitionImpl[]> ,其次,正如评论中指出的那样,通过避免使用 .forEach() 可以大大简化方法的复杂性。至 .push()范围数组中的条目。

getAllPluginImpls(): Promise<DesktopPluginDefinitionImpl[]> {
const pluginArray: Promise<DesktopPluginDefinitionImpl>[] = Array.from(
this.pluginMap.keys(),
id => this.pluginManager.findPluginDefinition(id)
);

return Promise.all(pluginArray);
}

澄清一下,Promise<DesktopPluginDefinitionImpl>[] 不是错字。 Promise.all()将 promise 数组转换为数组的 promise。

关于javascript - 在循环内 promise 后返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51365791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com