У меня есть два обещания в цепочке, например:
router.get('/:address', function (req, res, next) {
let prodotti = [];
istanza.methods.getProductByOwner("xxxxx").call().then(
ids => {
for (let id of ids) {
istanza.methods.prodotti(id).call().then(
prod => {
prodotti.push(prod);
},
error => console.dir(error)
)
}
},
err => console.log("ritiro KO " + err)
);
res.render('profilo', {address: req.params.address, prodotti: prodotti});
});
Я хочу заполнить prodotti, когда закончится for.
Я пытаюсь так:
router.get('/:address', function (req, res, next) {
let prodotti = [];
istanza.methods.getProductByOwner("xxxx").call().then(
ids => {
f(ids)
},
err => console.log("ritiro KO " + err)
);
res.render('profilo', {address: req.params.address, prodotti: prodotti});
});
, а затем
async function f(ids) {
let prodotti = [];
let promises = []
promises.push(new Promise((resolve, reject) => {
for (let id of ids) {
promises.push(istanza.methods.prodotti(id).call().then(
prod => {
prodotti.push(prod);
//resolve when for is finished
if(id == (ids.length)-1){
resolve(prodotti)
}
id++;
},
error => console.dir(error)
));
}
}));
let result = await Promise.all(promises);
console.log("await " + result);
}
но мой результат:
,,, [объект Object], [объект Object], [объект Object]
Я хочу получить результат только тогда, когда завершено, и я не люблю использовать условие, подобное этому:
if(id == (ids.length)-1)