在上一个事件结束后处理下一个事件

时间:2015-07-31 13:50:08

标签: node.js imap control-flow

我正在使用node-imap模块来获取邮件,我的代码是

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);
      });
    });

  });

}

但如果存在多条消息,请求将在最后完成,我希望每条消息和请求都结束并转到下一条消息,如何使用node.js处理此消息?

1 个答案:

答案 0 :(得分:0)

  

但如果存在多条消息,请求将在最后完成

这不会发生什么。与请求一样,消息以异步处理。它可能看起来是这样,因为消息与请求一起尽可能快地处理。节点不会等待"整个活动在开始之前完成另一个活动。

消息是否按顺序处理至关重要?如果是这样,请查看异步库。