如何为节点imap实现重试机制

时间:2019-09-20 11:50:11

标签: node.js imap node-imap

我正在使用IMAP NPM来获取电子邮件。我想知道如何在获取电子邮件信息时处理重试机制。官方页面没有相同的任何文档

代码可以成功获取电子邮件信息。我试图手动实现Retry机制,但是由于涉及许多事件回调,因此事情变得很艰难。例如

有人尝试过这种情况吗?我的代码段如下

    imap.once('ready', function() {
      openInbox(function(err, box) {
      if (err) throw err;
      var f = imap.seq.fetch('1:3', {
      bodies: 'HEADER.FIELDS (FROM TO SUBJECT DATE)',
      struct: true
    });

在上述情况下,我想再次调用openInbox函数重试,而不是引发错误。但这会带来错误。

2 个答案:

答案 0 :(得分:0)

由于有许多回叫,因此这里无法重试。您需要再次拨打完整电话。最好的办法是让父代码调用此逻辑,并将其循环X次,直到获得成功,否则返回错误。

答案 1 :(得分:0)

我有使用'async.retry'工作的要求。 IMAP及其功能的类。在一种称为IMAP功能的方法中,然后使用异步调用此方法。