我是新來的nodejs。爲什麼模塊導出變量爲空?
這是我的.js文件。我試圖將audioData變量暴露給其他函數。 audioData變量值在函數外部是空的。當我在函數內部打印時,我看到了這個值。什麼可能是錯的?
'use strict';
var asyncrequest = require('request');
var xml2js = require('xml2js');
var parseString = xml2js.parseString;
var audioData = [];
asyncrequest("http://example.com/feed", function(error, responsemeta, body) {
parseString(body, function(err, result){
var stories = result['rss']['channel'][0]['item'];
console.log("Total stories: " + stories.length);
stories.forEach(function(entry) {
var singleObj = {}
singleObj['title'] = entry['title'][0];
singleObj['value'] = entry['enclosure'][0].$.url;
audioData.push(singleObj);
});
});
console.dir(audioData);
});
module.exports = audioData;
console.log("Program ended");
您正在執行修改'audioData'的異步請求。該請求在變量被導出後運行*。因此,使用'require'的導入將檢索空數組。它將保持空白,直到請求完成。 – heartyporridge
@heartyporridge IIRC'require()'是同步的,因此在導出空數組後,即使請求完成後它仍然保持這種方式 – spicypumpkin
@spicypumpkin Hm ...但不需要返回引用?糾正我,如果我錯了,如果它被模塊更新,它會被需要它的人更新。 除非...每個'require'都爲導出的變量生成一個唯一的作用域? – heartyporridge