self 和 global

在程序中,設置global.app = pomelo.app,將pomelo創建的的 Application復制給全局變量global,這樣在程序中,隨處都可以用 global.app 來獲取Application 對象。

自己在程序中遇到的問題是,在一個獨立的模塊的函數中,例如

Lobby.prototype.entry = function( charId, next ){

? ? ? var self = this;

? ? ? ?async.waterfall([

? ? ? ? ? ? ? function(cb){

? ? ? ? ? ? ? ? ? ?self.app.redis.get('character_'+charId,cb);

? ? ? ? ? ? ? }

? ? ? ? ],function( err , info ){

? ? ? ? });? ??

}


有時候會出現錯誤提示 cannot call redis of undefined.

這就意味著self.app 沒有獲取到。按照正常的程序來說,此時的self.app 和global.app是相同的,沒有任何區別。

分析一下可能的原因是,這里的self 已經被 ‘污染’ 了。 可能是在調用這個entry方法的時候就已經被污染了。如果一直用global.app.redis 是不會報這樣的錯誤的。

具體的原因自己還沒有分析透,等自己找到原因了,在記下來。


今天就寫到這,這幾天連續加班 太累了 。

待續。。。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容