Artık Express.js kullanarak Node.js Uygulaması yapıyorum. Diğer siteden bazı verileri gösteren bir sayfam var. Bu yüzden Cheerio.js ile kullanıyorum ve sorun değil, ama sorun şu ki, hurda işi tamamlandığında nasıl işleyebilirim? Aşağıdaki gibi bir kod yaptım, lütfen bakın. bazı yollar yapmakNode.js res.render
var urls = [ 'http://a.com/fruits', 'http://a.com/cars', 'http://a.com/toys' ]
function getData(){
// get html and parse, return some data.
...
}
var data_set = '';
for (var i=0; i< urls.length ; i++){
data_set += getData(urls[i]);
}
// When get all data, render <------ How can I catch when?
res.render('some_page', { data : data_set });
Düşünce,
# 1 - Render zamani == urls.length
for (var i=0; i< urls.length ; i++){
data_set += getData(urls[i]);
if(i == urls.length){
res.render(....);
}
}
// Result :
// The data has not been scrapped, so the page wouldn't display data fully.
# 2 - geri arama getData (ile)
function getData(callback){
// get html and parse, return some data.
...
// when complete, callback();
}
var someHelper = 0;
getData(function(){ someHelper ++ ;});
if (someHelper == 3){
res.render(...);
}
// If someHeper is not 3, the page would not rendered.
// And `if statement` executed before someHelper == 3 at times ==> infinite page loading (error)
Nasıl yapabilirim Bu şey mi? Kullanım Promise
? ... Kullanmalı mıyım? Lütfen bazı noktalarda bana yardımcı olun.
Bu Promise' için tavsiyem – kiro112
@ kiro112 Derlenmiş şablonun ne olduğunu bilmiyorum ... sadece birkaç sayı. – Juntae