2013-05-09 118 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(); 
    }); 
} 

這將保證表格不會被使用,直到獲取結果並填充表格爲止。