访问Javascript对象-Node.js的作用域问题
Access Javascript object - Scope issue with Node.js
我想定期使用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.js
的fetchMail()
函数中,并且imap.once('ready', function())
从不被触发。
我想这是mail.js
中imap
变量的范围问题。
我该怎么解决这个问题?
编辑
我用一种我不喜欢的方式解决了这个问题。我在fecthMail()
函数中编写了与imap-var相关的所有内容。
请不要犹豫,写一个更有效的答案。
每次连接时都需要绑定事件。大致如此:
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();
};
方法和想法都很棒。您所需要的只是更改mail.js文件的语法以返回一个模块。换句话说,当你做时
var mail = require('./js/mail');
您希望在mail变量中包含什么?
你可能需要改变逻辑,但试试这个:
var MailHandler = function () {}
var imap = new Imap({
user: 'xxxx@hotmail.com',
password: config.get.gmail_password,
host: 'xxxxx',
port: 993,
tls: true
});
MailHandler.init = function(){
imap.once('ready', function() {
console.log('Ready');
imap.search([ 'UNSEEN', ['FROM', 'xxxx'] ], function(err, results)
{
// Do Stuff
}
}
}
MailHandler.fetchMail = function()
{
console.log('Connection');
imap.connect();
};
//fetchMail();
module.exports = new MailHandler()
相关文章:
- 作用域问题-此函数是否形成闭包-JavaScript
- 访问Javascript对象-Node.js的作用域问题
- 尝试将变量传递到对象中时的作用域问题'的方法构造函数
- 'simple'套接字中的作用域问题.IO服务器
- Javascript作用域问题,对象在分配后没有数据
- 可能存在Javascript作用域问题
- 本地Javascript作用域问题
- 设置Javascript函数的作用域问题
- Javascript 中使用 setTimeout 的作用域问题
- 作用域问题反应父子方法ES6
- jquery get中的作用域问题
- 绑定时出现Javascript作用域问题
- 试图覆盖全局变量时出现jQuery.post()作用域问题
- 作用域问题Uncaught ReferenceError
- 使用reduce串行链接Javascript承诺时的作用域问题
- Javascript变量作用域问题-错误:类型错误:this.graphics未定义
- extjs 4中的作用域问题
- 变量未正确赋值,可能存在作用域问题(getJSON()中的each()中有一个开关的函数)
- Javascript作用域问题:函数在$(doc).ready()中可用,但在事件处理程序中不可用
- Angular 2服务单例作用域问题