【问题标题】:How to resolve a promise from another function如何解决另一个函数的承诺
【发布时间】:2018-04-21 08:23:47
【问题描述】:

我不知道如何解决来自其他函数的承诺。

1.如何通过发送邮件告诉 blabla()“收到邮件”?

  1. 此电子邮件模块管理邮件,当我们收到电子邮件时它会触发“新”。

mail.on('new', function(mail) {})

  1. 这个模块会做一些事情,并且在某些时候必须等待_mail,然后才能继续。

    function blabla() {
        [.. I do stuff ..]
        console.log('now we must wait for a new mail')
        const the_mail = await waiting_for_mail()
        [.. I can continue stuff (I have the mail) ..]
    }
    
    • 这两个模块必须分开,它们执行 != 任务。
    • 第一个管理邮件,第二个管理短信。
    • waiting_for_mail() 没有定义,我想我必须使用这个逻辑。

【问题讨论】:

  • waiting_for_mail 在哪里以及如何定义?它是异步函数还是返回 Promise?
  • 我还没有定义它,我想这是我应该使用的逻辑,因为我必须“等待”邮件。
  • 请提供您的实际代码,以便我们帮助您更轻松地识别问题。
  • 在这种情况下,waiting_for_mail 应该返回一个 Promise 来解析收到的邮件。
  • 好的,你是怎么做到的?那是我的问题。当我收到一封电子邮件时,我怎样才能知道 blabla() 以便 blabla() 可以继续他的工作,收到邮件

标签: javascript promise es6-promise resolve


【解决方案1】:

好吧,我这里没什么可说的,但这里有一个我能收集到的建议:

function waiting_for_mail() {
    return new Promise(resolve => {
        mail.once('new', resolve);
    });
}

【讨论】:

  • 它可能应该使用mail.once(),在它被调用时取消订阅监听器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 2013-07-02
  • 1970-01-01
相关资源
最近更新 更多