Hi,

to mentions for you problem. Do it like this:

let countRepetidos = 0;
const count = (data) => {
    if(data.count>0){
        countRepetidos++;
        console.log("count repetidos 1",countRepetidos); // value 116
    }
};

Promise.all(aux.map((val) =>
Database.Probing.getMacAdress(val).then(count)).then(() =>
resolve(countRepetidos))

Your problem is a classical async problem. You mix async and sync stuff.
What we do is, to map your aux values to the resolver values from the
query. Now we are able to watch, if all resolver are are finished by
Promise.all and then handle your counting.

A much fancier implementation is this.

const count = (data) => {
    return data.count > 0 ? 1 : 0;
};

Promise.all(aux.map((val) =>
Database.Probing.getMacAdress(val).then(count)).then((data) =>
resolve(data.reduce((p,c) => p+c,1));

You also should use Array.isArray(obj.data.list) instead of this -
obj.data.list!={} - in the if statement.

Hope it will help to solve your problem.

Thomas


Am 21.07.2017 um 13:54 schrieb Catia Matos:
> 
> 0down votefavorite
> <https://stackoverflow.com/questions/45236919/outside-for-loop-var-value-is-undefined#>
>       
> 
> I'm facing a problem with a value where inside my for cycle it has
> values like "179" and outside i get always undefined. Why?
> 
> |varcountRepetidos;if(obj.data.list!={}&&obj.data.list.length>0){varaux
> =obj.data["list"];countRepetidos=0;for(vari=0;i<aux.length;i++){Database.Probing.getMacAdress(aux[i]).then(function(data){if(data.count>0){countRepetidos++;console.log("count
> repetidos 1",countRepetidos);// value
> 116}});}returnresolve(countRepetidos);}console.log("count repetidos
> 2",countRepetidos);// value undefined|
> 
> log :
> 
> |3|wscontro |count repetidos 11163|wscontro |count repetidos 2undefined|
> 
> I try instead of use resolve, use callback but nothing... I saw other
> answers in javascript but for node.js I cant resolve this problem... I
> saw the link refering thus question as a duplicate but cant figure out a
> solution to this case.
> 
> -- 
> Job board: http://jobs.nodejs.org/
> New group rules:
> https://gist.github.com/othiym23/9886289#file-moderation-policy-md
> Old group rules:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> ---
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected]
> <mailto:[email protected]>.
> To post to this group, send email to [email protected]
> <mailto:[email protected]>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/nodejs/743beb4c-731e-4d2c-8055-bdf1804c4595%40googlegroups.com
> <https://groups.google.com/d/msgid/nodejs/743beb4c-731e-4d2c-8055-bdf1804c4595%40googlegroups.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout.

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/2d63bc84-5124-ca9c-7b8f-654f68c8041e%40gmx.de.
For more options, visit https://groups.google.com/d/optout.

Reply via email to