Well that totally is the correct answer :)  But now I can't figure out why?

Running your code returned true which helped figure it out.
console.log(results[0] === results[1]);  

I then tried to take a deep copy of the body object and passing that into 
the callback like so...  and voila... the response looks correct.  

return callback(err, JSON.parse(JSON.stringify(body)));









On Monday, 26 January 2015 10:22:37 UTC-5, Justin Maat wrote:
>
> Sorry for the title, but I can't think of an easier way to word this.  
>   
> I'm trying to use the async library <https://github.com/caolan/async#map> 
> with 
> Node.js to run 3 asynchronous functions and do some operation on the 
> results of all 3.  From what I understand, the map() function allows me to 
> run all 3 and apply an argument to an iterator, then provide a callback to 
> operate on the results of all 3 async functions (stored in an array).  
>
> The results are showing 3 successful responses, but they all contain the 
> data from that last (3rd) function run, the other 2 are overwritten for 
> some reason.
>
> For example,
>
>     /**map the array of exchange names through the iterator function
>      * xchange is an external library which has functions of the form -
>      * xchange.bitstamp.ticker(callback), 
> xchange.bitfinex.ticker(callback), etc..
>      */
>     var xchange = require("xchange.js"),
>         async = require("async");
>
>     async.map([ "bitfinex", "bitstamp", "okcoin" ], 
>     function(item, callback) {
>     xchange[item].ticker(function(err, body) {
>     console.log("item: " + item);
>     console.log(body);
>     
>     return callback(err, body);
>     });
>     }, function(err, results) {
>     console.log(results);
>     });
>
>     
>     //print out
> item: bitstamp
>     { bid: 275.16,
>       ask: 275.21,
>       low: 245,
>       high: 309.9,
>       volume: 54017.1092978,
>       timestamp: 1422283998 }
>     item: okcoin
>     { bid: 279.25,
>       ask: 280.44,
>       low: 242.93,
>       high: 310.57,
>       volume: 29342.543,
>       timestamp: 1422284015 }
>     item: bitfinex
>     { bid: 279.2,
>       ask: 279.77,
>       low: 246.59,
>       high: 315,
>       volume: 165380.17021898,
>       timestamp: 1422284011.1361156 }
>
>     //Why are these all from the last run?  Should be the results of all 3 
> above
>     [ { bid: 279.2,
>         ask: 279.77,
>         low: 246.59,
>         high: 315,
>         volume: 165380.17021898,
>         timestamp: 1422284011.1361156 },
>       { bid: 279.2,
>         ask: 279.77,
>         low: 246.59,
>         high: 315,
>         volume: 165380.17021898,
>         timestamp: 1422284011.1361156 },
>       { bid: 279.2,
>         ask: 279.77,
>         low: 246.59,
>         high: 315,
>         volume: 165380.17021898,
>         timestamp: 1422284011.1361156 } ]
>
>   
> Basically the xchange ticker function uses the [request][2] module to call 
> an http request on each ticker api.  The results (somewhat transformed) are 
> returned.  
>
> I'm able to run the following code 
> <https://gist.github.com/jxm262/c32cf5ede3c1d5e4bfd6> with no errors, so 
> I'm certain it has something to do with my xchange library code.
>   
> Any tips or ideas on what could cause this?  
>
>
>

-- 
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/3070062e-598c-48cf-be22-cfbc23a7e478%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to