Angular Promise returns 在另一个组件中未定义
Angular Promise returns undefined in another component
这是我的 carComponent.ts
它有以下方法:
async Download() {
try {
const settings = {
kit: true,
tyres: true,
serviced: false,
};
const [kits, tyres] = await Promise.all([
this.checkKits(
conf,
"A",
100,
false,
"My kit"
),
this.checktyres(100, 50, false, 'My tyres'),
]);
const checkSvg= [...kits.slice(0, 4), ...tyres, ...kits.slice(4)];
checkSvg.forEach(({ side, svg }) => {
console.log(svg); // here it returns all the SVG data; works 100%
return svg;
});
}
catch(e) {
console.error(e);
}
}
这是viewCarsComponent.ts
调用上面的方法。但是这里承诺 returns undefined 所以任何人都可以帮助解决我的问题吗?我不确定我做错了什么或者我需要在这里做什么来解决。
async DisplaySVG() {
await this.carComponent.Download().then(data =>{
console.log(data);
// here it is undefined...
}).catch(error =>{
console.log(error)
});
}
谢谢
您当前在下载中没有 return 语句,因此默认情况下承诺解析为未定义。如果你想要 return 所有套件和轮胎的数组,那么只需 return checkSvg
:
const checkSvg = [...kits.slice(0, 4), ...tyres, ...kits.slice(4)];
return checkSvg;
如果其中每一个都有一个 .svg
属性,而您只需要这些,则创建一个仅包含 .svg
属性的新数组,并且 return :
const checkSvg = [...kits.slice(0, 4), ...tyres, ...kits.slice(4)];
const svgsOnly = checkSvg.map(({ svg }) => svg);
return svgsOnly;
这是我的 carComponent.ts
它有以下方法:
async Download() {
try {
const settings = {
kit: true,
tyres: true,
serviced: false,
};
const [kits, tyres] = await Promise.all([
this.checkKits(
conf,
"A",
100,
false,
"My kit"
),
this.checktyres(100, 50, false, 'My tyres'),
]);
const checkSvg= [...kits.slice(0, 4), ...tyres, ...kits.slice(4)];
checkSvg.forEach(({ side, svg }) => {
console.log(svg); // here it returns all the SVG data; works 100%
return svg;
});
}
catch(e) {
console.error(e);
}
}
这是viewCarsComponent.ts
调用上面的方法。但是这里承诺 returns undefined 所以任何人都可以帮助解决我的问题吗?我不确定我做错了什么或者我需要在这里做什么来解决。
async DisplaySVG() {
await this.carComponent.Download().then(data =>{
console.log(data);
// here it is undefined...
}).catch(error =>{
console.log(error)
});
}
谢谢
您当前在下载中没有 return 语句,因此默认情况下承诺解析为未定义。如果你想要 return 所有套件和轮胎的数组,那么只需 return checkSvg
:
const checkSvg = [...kits.slice(0, 4), ...tyres, ...kits.slice(4)];
return checkSvg;
如果其中每一个都有一个 .svg
属性,而您只需要这些,则创建一个仅包含 .svg
属性的新数组,并且 return :
const checkSvg = [...kits.slice(0, 4), ...tyres, ...kits.slice(4)];
const svgsOnly = checkSvg.map(({ svg }) => svg);
return svgsOnly;