How to know when finished

Im pretty new to node.js, so i'm wondering how to know when all elements are processed in lets say:

["one", "two", "three"].forEach(function(item){
    processItem(item, function(result){
        console.log(result);
    });
});

...now if i want to do something that can only be done when all items are processed, how would i do that?

You can use async module. Simple example: The

async.map(['one','two','three'], processItem, function(err, results){
    // results[0] -> processItem('one');
    // results[1] -> processItem('two');
    // results[2] -> processItem('three');
});

The callback function of async.map will when all items are processed. However, in processItem you should be careful, processItem should be something like this:

processItem(item, callback){
   // database call or something:
   db.call(myquery, function(){
       callback(); // Call when async event is complete!
   });
}

forEach is blocking, see this post:

Javascript, NodeJS: is Array.forEach asynchronous?

so to call a function when all items are done processing, it can be done inline:

["one", "two", "three"].forEach(function(item){
    processItem(item, function(result){
        console.log(result);
    });
});
console.log('finished');

if there is a high io-bound load for each item to be processed, then take a look at the module Mustafa recommends. there is also a pattern referenced in the post linked above.