【发布时间】:2018-12-24 05:39:02
【问题描述】:
我正在尝试在运行循环并每次调用承诺后汇总响应。但是,该函数不会等待所有的 Promise 完成并返回 undefined。
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;
});
}
【问题讨论】:
-
你需要兑现你的承诺。
-
使用 .
map(),而不是.forEach() -
不要推送到数组,而是从你的承诺中返回值,
Promise.all()会给你你想要的。 -
是的,但我想最终返回数组
-
你需要返回一个数组的promise。
标签: javascript typescript promise angular-promise