代码之家  ›  专栏  ›  技术社区  ›  Sam

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

  •  0
  • Sam  · 技术社区  · 9 年前

    我使用节点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 回复  |  直到 9 年前
        1
  •  0
  •   Hyo Byun    9 年前

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

    这不是会发生的。消息已处理 异步地 ,与请求一样。这可能是因为消息和请求一起被处理得尽可能快。节点不会在开始另一个事件之前“等待”整个事件完成。

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