"iterating" Throw Promises Does Not Let To Generate Different Ids
Reading some amazing tutorials about promises, I've discovered that, if I need to interate throw some promises, I can't use forEach or some other 'traditional' iteration mechanisms
Solution 1:
the reason it is not working is because in first for loop, the req.id
is set multiple times before other promises are started and and all of them end up using the last randomly generated value, change your code to:
app.get('/', (req,res) => {
letprocess = (currentValue,index,arr) => {
let reqCopy = {id: Math.random()}
for(let attr in req) // copy all the request attributesif(attr && attr!='id')
reqCopy[attr] = req[attr]
return Q.all([
Form.insert(form[index],reqCopy),
Field.insert(params[index],reqCopy),
Meta.insert(meta[index],reqCopy)
])
}
return Q.all(form.map(process))
.catch(next)
.done(() =>console.log('It\'s done'));
})
you would notice that I am copying all the attributes of req
to clone reqCopy
for I am not sure what attributes of req
are required by the subsequent methods, but at the same time, single req.id
would not work thanks to the async nature of code
Post a Comment for ""iterating" Throw Promises Does Not Let To Generate Different Ids"