【发布时间】:2022-02-10 04:09:33
【问题描述】:
我有一个嵌套对象subprojects,其属性类型为数组:userEstimates 持有对象Estimate。
我希望遍历 userEstimates 并将 fetch/promise 推送到数组而不调用它。
main(在async函数内)
await subproject.getUserEstimates(true);
let stack = [];
subproject.userEstimates.forEach(ue =>
stack.push(ue.fetchAvailableRates)
);
console.log(stack); // 3) [ƒ, ƒ, ƒ]
await Promise.all(stack);
fillForm(subproject);
但是,subproject 上的属性在调用 fillForm 时没有定义
fetchAvailableRates 的函数定义:
fetchAvailableRates = () => {
this.availableRates = fetch(...)
.then((resp) => {
if (resp.ok) return resp.json();
else throw new Error("Something went wrong");
})
.then((r) => {
...
return {
Rate.get(), // returns class
...
};
})
.catch((e) => {
console.error(e);
});
};
编辑:将我的措辞从队列更改为堆栈,因为我试图一次运行所有请求,我不在乎顺序
【问题讨论】:
-
恐怕不清楚您要做什么。
Promise.all()接受 Promises,而不是函数,但是如果您调用fetchAvailableRates并用 Promises 填充堆栈,那么Promise.all()将工作并返回一组费率(尽管您没有向我们展示任何代码可以将这些返回的费率放回原处进入子项目)。您能帮助我们理解为什么“不调用它”很重要以及您希望发生什么吗? -
@JeffBowman 你帮我找到了它,我的
fetchAvailableRates()没有兑现承诺 -
哦,我明白了。我会回答,但你也可以自己回答。
标签: javascript asynchronous async-await promise