变量优先级(节点js中的全局?)

时间:2016-04-21 14:02:47

标签: node.js

"use strict";

var Tabletop = require("tabletop");
var base64 = require('base-64');


Tabletop.init( { key: 'xxxxxg46hgfjd',
                   callback: showInfo,
                   simpleSheet: true } )

function showInfo(data, tabletop) {
       console.log(data);
       console.log(base64.encode(data));
}

var vGlobals = {
    dataString: base64.encode(data)
};

module.exports = vGlobals;

如何从showInfo访问数据变量,以便在vGlobals中使用?它说没有定义。

1 个答案:

答案 0 :(得分:0)

你的方法是错误的,你不能这样做,因为TableTop异步调用你的回调。

我的建议(快速的):

   var dataString = null;
   module.exports = function(cb) {
       if (dataString == null)
           Tabletop.init({
               key: 'xxxxxg46hgfjd',
               callback: function(data, tabletop) {
                   dataString = base64.encode(data);
                   cb(dataString);
               },
               simpleSheet: true
           });
       else cb(dataString);
   };

获取数据:

var dataManager = require('./myfile');
dataManager(function(dataString) {
  //here is your data do what you want with it
})

您应该查看/了解有关node / javascript和异步/事件驱动编程的更多信息。