2015-07-31 1 views
0

J'utilise le module noeud-imap pour récupérer les mails et mon code estsuivant l'événement l'un après l'événement précédent a pris fin

var Imap = require('imap'), 
    request = require('request'); 

var imap = new Imap(); 
/** Code for connecting to mail server **/ 

var fetch = imap.fetch([1,2,3]); 

fetch.on('message', function(msg, seqno) { 

    msg.on('body', function(stream, info) { 

    stream.on('end', function() { 
     request('http://httpbin.org/ip', function(error, response, body){ 
     console.log(response.statusCode); 
     }); 
    }); 

    }); 

} 

mais si plusieurs message existe la demande sera terminée le dernier, je veux tous les message et demande terminée et aller au message suivant, comment gérer cela avec node.js?

Répondre

0

mais si plusieurs message existe la demande sera terminée le dernier

Ce n'est pas ce qui se passerait. Les messages sont traités de façon asynchrone, comme avec les demandes. Il peut sembler que les messages sont traités aussi rapidement que possible, avec les demandes. Le nœud n'attendra pas que tout l'événement se termine avant d'en commencer un autre.

Est-il crucial que les messages soient traités dans l'ordre de la série? Si c'est le cas, consultez la bibliothèque asynchrone.

+0

Oui, l'ordre de la demande est critique, je regarde le module asynchrone mais, ne pouvais pas comprendre comment gérer cela avec asynchrone – Sam

+0

Regardez la file d'attente en asynchrone https://github.com/caolan/async#queue. –

+0

pourriez-vous me donner une solution pour mon problème avec async? – Sam