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/2828763a-2681-43f3-a8c7-0250cbd3fb5d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to