gpt4 book ai didi

javascript - 访问 Javascript 对象 - Node.js 的范围问题

转载 作者:搜寻专家 更新时间:2023-11-01 00:00:10 26 4
gpt4 key购买 nike

我想使用 Node 守护程序定期从邮箱中提取邮件。对连接方法的调用是在 app.js 中进行的。

我用来连接邮箱的javascript文件(mail.js):

var imap = new Imap({
user: 'xxxx@hotmail.com',
password: config.get.gmail_password,
host: 'xxxxx',
port: 993,
tls: true
});

var fetchMail = function()
{
console.log('Connection');
imap.connect();
};

//fetchMail();

imap.once('ready', function() {
console.log('Ready');

imap.search([ 'UNSEEN', ['FROM', 'xxxx'] ], function(err, results)
{
// Do Stuff
}

exports.fetchMail = fetchMail;

如果我直接从 mail.js 使用 fetchMail(),一切都很好。

但是,当我尝试从 app.js 调用它时:

var mail = require('./js/mail');
mail.fetchMail()

然后,该方法停留在 mail.jsfetchMail() 函数和 imap.once('ready', function()) 永远不会被触发。

我猜这是 mail.js 中的 imap var 的范围问题。

我该如何解决这个问题?

编辑

我以我不喜欢的方式解决了这个问题。我在 fecthMail() 函数中编写了与 imap var 相关的所有内容。

请不要犹豫,为此写一个更有效的答案。

最佳答案

每次连接时都需要绑定(bind)事件。像这样:

var fetchMail = function()
{
console.log('Connection');

imap.once('ready', function() {
console.log('Ready');
imap.search([ 'UNSEEN', ['FROM', 'xxxx'] ], function(err, results)
{
// Do Stuff
}
}
imap.connect();
};

关于javascript - 访问 Javascript 对象 - Node.js 的范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37001321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com