Я использовал http, чтобы получить json, но не могу передать его на главную страницу, даже я уже использовал q, может помочь выполнить синхронизацию, но все еще проблемы, кто может помочь? //getturnto.jsПроблема с nodejs sync с q
var conf = require("../conf/setting.json");
var http = require("http");
function TurnToUGC(){
if(!(this instanceof TurnToUGC)){
return new TurnToUGC();
}
};
TurnToUGC.prototype.getUGCJson = function(item,callback){
var UGCPath = conf.UGCPath;
var options = {
host:conf.UGCHost,
port:conf.UGCPort,
path:UGCPath
};
http.get(options,function(res){
var buf = "";
res.on("data",function(d){
buf += d;
});
res.on("error",function(error){
callback(error);
});
res.on("end", function() {
var ret;
try{
ret = JSON.parse(buf);
}catch (err){
return callback(err);
}
callback(null,ret);
})
}).on("error",function(er){
console.log(er);
});
};
module.exports = TurnToUGC;
тогда я хочу показать, (я использовал экспресс создания простого веб-страницы) // это router.index
var q = require("q");
exports.index = function(req, res,next){
var getturnto = require("getturnto")();
q().then(function(){
getturnto.getUGCJson(null,function(err,re){
if(err){
console.log(err);
return {"error":err};
}else {
console.log(re);
return re;
}
});
})
.then(function(UGCData){
res.render('index',
{ title: 'Get UGC Content',
data:UGCData
}
);
})
.fail(function(err){
console.log(err);
next(err);
});
}
, что JSON может распечатать в консоли , но «UGCData» всегда не определено, и объект json не может перейти на главную страницу.
спасибо! Ты прав. –
как вы предлагаете, я переиздал getUGCJson –