2013-05-09 54 views
2

我认为这是一个问题,它是异步,但我不知道解决方案。NodeJS无法访问回调里面的变量

PagesController.buy = function() { 

    var table=""; 
    Selling.find({}, function(err, res) { 
    for (var i in res) { 
     console.log(res[i].addr); 
     table = table + "res[i].addr"; 
    } 
    }); 
    this.table = table; 
    console.log(table); 
    this.render(); 
} 

我的问题是,this.table=table正在恢复,如果我尝试的功能的外部访问它不确定的,我不能弄清楚如何在页面上显示的表。

+0

你如何尝试访问函数外的“this.table”? – 2013-05-10 02:43:56

+0

对不起,我的意思是在函数(err,res){}中设置变量“table”,当我尝试将它分配给this.table时,变量“table”为空。 – h00j 2013-05-10 10:37:40

回答

5

问题是Selling.find是异步的,并且在执行this.table = table时可能不完整。尝试如下所示。

PagesController.buy = function() { 
    var that = this; 
    Selling.find({}, function(err, res) { 
    var table = ''; 
    for (var i in res) { 
     console.log(res[i].addr); 
     table = table + res[i].addr; 
    } 

    that.table = table; 
    console.log(table); 
    that.render(); 
    }); 
} 

这将保证表格不会被使用,直到获取结果并填充表格为止。