以下代码检查字段是否为文件类型以及其中是否存在实际文件。如果是这种情况,请上传照片并更新建筑物。如果情况并非如此,请使用旧照片更新建筑物:
fields.forEach(field => {
building[field.name] = field.value || this.building[field.name]
if (field.type === 'file' && !util.isEmpty(field.photo.file)) {
api.uploadPhoto(field.photo.file).then(resp => {
building[field.name] = resp
this.updateBuilding(building)
})
} else {
building.logo = this.building.logo // to prevent updating logo
building.floorplan = this.building.floorplan // to prevent updating logo
this.updateBuilding(building)
}
})
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但由于this.updateBuilding(building)它是在一个循环中,所以它被称为倍数。
如何做到这一点,以便仅在最后一次迭代中调用?
建议MDN documentation回调具有forEach三个参数:
您可以使用它来检查当前元素的索引是否等于数组的最后一个索引:
fields.forEach((field, index, array) => {
// YOUR CODE
if (index === array.length - 1) {
// DO SOMETHING
}
});
Run Code Online (Sandbox Code Playgroud)