我從字面上剛開始使用nodeJS,並且在過去的8個小時裏一直在干擾它。我之前完成了J2EE和.NET,並且也想進入NodeJS。初學Node.JS,沒有按預期返回
我試圖從Data.js文件獲取響應時遇到問題。我可以成功地將數據串聯起來,但由於某種原因,我無法將其返回。它在index.js路由器中結束爲null或空字符串(它的默認值)。我已經在下面的Data.js代碼中解釋了註釋。
謝謝你提前告訴我,我怎樣才能提高我的代碼:) 我仍然有很多的概念,瞭解
index.js
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
var Data = require('../public/javascripts/Data');
var responseString = Data.test;
res.render('index', { d: responseString });
console.log(responseString)
});
module.exports = router;
Data.js
var request = require('request'),
cheerio = require('cheerio'),
responseTitles = [],
responseUrls = [],
responseJSONArray = [],
responseTotalNumber = 0,
responseString = "";
function getData(){
request('URL',function(err,response,body){
console.log("requesting..")
if(!err && response.statusCode == 200){
console.log("success..")
var $ = cheerio.load(body);
var data = [];
data = $('span.titletext');
data.each(function(i){
responseTitles.push(data[i].children[0].data);
responseUrls.push(data[i].parent.attribs.url);
responseTotalNumber = i;
responseJSONArray.push([{index: i, Title: data[i].children[0].data, url: data[i].parent.attribs.url}])
});
responseString = JSON.stringify(responseJSONArray);
//At this point, responseString has all the data but
//if I put the return here, it doesn't return anything
}
});
//At this point responseString returns "". And so it returns an empty string
return responseString;
}
module.exports= {
test: getData()
};
這是關於異步Javascript編程的最常見的重複問題之一。 – jfriend00