Nodejs Promise Pending Hatası
-
end bunu yazdı
const TronGrid = require('trongrid'); const TronWeb = require('tronweb'); const tronWeb = new TronWeb({ fullHost: 'https://api.trongrid.io', headers: { "TRON-PRO-API-KEY": '********' }, privateKey: '' }) const tronGrid = new TronGrid(tronWeb) const fetch = require('node-fetch'); // "atesle (async/await [non blocking]) oynuyorsan, lambda icinde olan async bir fonksiyonda oynayacaksin evlat!" -EndMurid (async () => { let { block_header: { raw_data: { number: last_tron_block } } } = await tronWeb.trx.getCurrentBlock() //solda gordugun muhabbet object destructuring'tir. console.log(last_tron_block) })()
golang ten sonra nodejs tede baya ilerdin kanka haa <3
-
end bunu yazdı
const TronGrid = require('trongrid'); const TronWeb = require('tronweb'); const tronWeb = new TronWeb({ fullHost: 'https://api.trongrid.io', headers: { "TRON-PRO-API-KEY": '********' }, privateKey: '' }) const tronGrid = new TronGrid(tronWeb) const fetch = require('node-fetch'); // "atesle (async/await [non blocking]) oynuyorsan, lambda icinde olan async bir fonksiyonda oynayacaksin evlat!" -EndMurid (async () => { let { block_header: { raw_data: { number: last_tron_block } } } = await tronWeb.trx.getCurrentBlock() //solda gordugun muhabbet object destructuring'tir. console.log(last_tron_block) })()
Async fonksiyonun un dışında kullanamayacak mıyım ben bu değeri? Bundan başka await Async gerektiren durumlar olursa hepsini iç içe mi yazacağım? Normal olan bu mudur nodejs de?
-
Arkadaşlar durum let, var ve const arasındaki farkları ve javascript tr değişkenlerin durumlarıyla alakalı eksik bilgimden kaynaklanmaktaymış, teşekkür ederim hepinize. Nodejs in tam bir aptal işi olduğunu düşünmeye başlamıştım.
-
Arlong bunu yazdı
Olmuyor ya yapamadım bir türlü ben bu işin mantığını anlayamadım
let last_tron_block =tronWeb.trx.getCurrentBlock().then(function(result) { result => { return result.block_header.raw_data.number; } }) console.log(last_tron_block);
hocam senin o "let last_tron_block" diye baslayan satirin alttaki console.log dan once calisacak gibi anliyosun da oyle degil iste o. .then in olayi sey demek "bunu yap sonrasinda bunu yap" ama o seyi beklemeden alt satira geciyor. bilmem anlatabildim mi. yani sen result u kullanmak istiyosan then in icinde kullanacaksin ya da await diyeceksin end muridin dedigi gibi. youtube dan 3-5 tane async nedir promise nedir konulu video izlemeni oneririm
-
yolbulucu bunu yazdıArlong bunu yazdı
Olmuyor ya yapamadım bir türlü ben bu işin mantığını anlayamadım
let last_tron_block =tronWeb.trx.getCurrentBlock().then(function(result) { result => { return result.block_header.raw_data.number; } }) console.log(last_tron_block);
hocam senin o "let last_tron_block" diye baslayan satirin alttaki console.log dan once calisacak gibi anliyosun da oyle degil iste o. .then in olayi sey demek "bunu yap sonrasinda bunu yap" ama o seyi beklemeden alt satira geciyor. bilmem anlatabildim mi. yani sen result u kullanmak istiyosan then in icinde kullanacaksin ya da await diyeceksin end muridin dedigi gibi. youtube dan 3-5 tane async nedir promise nedir konulu video izlemeni oneririm
İzleyeceğim hocam eyv
-
Arlong bunu yazdı
Arkadaşlar durum let, var ve const arasındaki farkları ve javascriptte değişkenlerin durumlarıyla alakalı eksik bilgimden kaynaklanmaktaymış, teşekkür ederim hepinize. Nodejs in tam bir aptal işi olduğunu düşünmeye başlamıştım.
"Gerizekali ibnenin evlatlari neredeyse her seyi nonblocking yapmislar. Ulan ben istersem nonblocking yapayim niye ters takla attiriyorsun bana?" Diyor insan ilk basta, haklisin. Suya biraz daha gir, beline kadar gelsin, iki cip cip yap, varsa cisin tutma, ise, hemencecik isiniyorsun :)))
javascript'te scope olayi istiyorsan let/const kullanacaksin. var global bisi, scope falan tanimaz. Ama, bu ayri konu. Senin sikintin non blocking yapi ile alakali.
Async olan main adinda bi fonksiyon yazip onun icinde calis, disarida main fonksiyonunu cagir.
-
Her projenin bir main fonksiyonu olmalı derdi üniversitede saygı değer bir rehberim. Haklı başlangıcı olmayan işin rotası olmazmış.
-
const express = require('express') const NodeCache = require('node-cache'); //const fetch = require('node-fetch'); const TronWeb = require('tronweb'); const app = express() const tronWeb = new TronWeb({ fullHost: '', headers: { 'TRON-PRO-API-KEY': '' }, privateKey: '' }) const myCache = new NodeCache(); const port = 3000 app.set('view engine', 'ejs') /* * bu degisken disarida cunku server ayakta oldugu surece hafizada kalsin istiyoruz ;) */ let last_controlled_tron_block; /* * */ app.get('/', async (req, res) => { let output = []; if (last_controlled_tron_block == null) //tanımsızsa 30730000 last_controlled_tron_block = 30730000; //kontrolün başlamasını istediğimiz block numarası let { block_header: { raw_data: { number: last_tron_block } } } = await tronWeb.trx.getCurrentBlock(); //en yeni block numarasını al // let i = 0; // while (last_controlled_tron_block < last_tron_block) { //son kontrol edilen block en yeni blocktan eski ise // let result = await tronWeb.trx.getBlockByNumber(last_controlled_tron_block); //tek tek tüm blockları sırayla al // last_controlled_tron_block = result.block_header.raw_data.number + 1; //alına son bloğu yeni alınan block numarasına göre arttır // myCache.set("last_controlled_tron_block", last_controlled_tron_block); //son blok numarasını cache e ekle // //bence burada cache'e gerek yok. niye? cunku degiskende tutuyorsun zaten... :) eger serveri yeniden baslatmazsan o degisken instance'i duruyor olacak... // // alınan blockların değerleriyle birşeyler yapılacak olan yer burası // i++; if (i > 10) { break; } //rate limite düşmemek için her çalışmada block kontrol et // } for (let i = 0; i < 10; i++) { if (last_controlled_tron_block < last_tron_block) { let result = await tronWeb.trx.getBlockByNumber(last_controlled_tron_block); //tek tek tüm blockları sırayla al last_controlled_tron_block = result.block_header.raw_data.number + 1; //alına son bloğu yeni alınan block numarasına göre arttır myCache.set("last_controlled_tron_block", last_controlled_tron_block); //son blok numarasını cache e ekle //bence burada cache'e gerek yok. niye? cunku degiskende tutuyorsun zaten... :) eger serveri yeniden baslatmazsan o degisken instance'i duruyor olacak... // alınan blockların değerleriyle birşeyler yapılacak olan yer burası output.push(result); } } res.json(output); //bu dongude aldigimiz outputlari json headerlariyla client'a gonderdik. }) app.listen(port, () => { console.log(`${port} listening`); })
@Arlong selam hocam.
Mesajina buradan cevap vermek istedim zira mesaj kutusunda indenting kahroluyor :P Bana gonderdigin kodla duzenledigim halini yan yana koy incele bakalim. Aklina takilanlari soruverirsin dilersen.
-
end bunu yazdı
const express = require('express') const NodeCache = require('node-cache'); //const fetch = require('node-fetch'); const TronWeb = require('tronweb'); const app = express() const tronWeb = new TronWeb({ fullHost: '', headers: { 'TRON-PRO-API-KEY': '' }, privateKey: '' }) const myCache = new NodeCache(); const port = 3000 app.set('view engine', 'ejs') /* * bu degisken disarida cunku server ayakta oldugu surece hafizada kalsin istiyoruz ;) */ let last_controlled_tron_block; /* * */ app.get('/', async (req, res) => { let output = []; if (last_controlled_tron_block == null) //tanımsızsa 30730000 last_controlled_tron_block = 30730000; //kontrolün başlamasını istediğimiz block numarası let { block_header: { raw_data: { number: last_tron_block } } } = await tronWeb.trx.getCurrentBlock(); //en yeni block numarasını al // let i = 0; // while (last_controlled_tron_block < last_tron_block) { //son kontrol edilen block en yeni blocktan eski ise // let result = await tronWeb.trx.getBlockByNumber(last_controlled_tron_block); //tek tek tüm blockları sırayla al // last_controlled_tron_block = result.block_header.raw_data.number + 1; //alına son bloğu yeni alınan block numarasına göre arttır // myCache.set("last_controlled_tron_block", last_controlled_tron_block); //son blok numarasını cache e ekle // //bence burada cache'e gerek yok. niye? cunku degiskende tutuyorsun zaten... :) eger serveri yeniden baslatmazsan o degisken instance'i duruyor olacak... // // alınan blockların değerleriyle birşeyler yapılacak olan yer burası // i++; if (i > 10) { break; } //rate limite düşmemek için her çalışmada block kontrol et // } for (let i = 0; i < 10; i++) { if (last_controlled_tron_block < last_tron_block) { let result = await tronWeb.trx.getBlockByNumber(last_controlled_tron_block); //tek tek tüm blockları sırayla al last_controlled_tron_block = result.block_header.raw_data.number + 1; //alına son bloğu yeni alınan block numarasına göre arttır myCache.set("last_controlled_tron_block", last_controlled_tron_block); //son blok numarasını cache e ekle //bence burada cache'e gerek yok. niye? cunku degiskende tutuyorsun zaten... :) eger serveri yeniden baslatmazsan o degisken instance'i duruyor olacak... // alınan blockların değerleriyle birşeyler yapılacak olan yer burası output.push(result); } } res.json(output); //bu dongude aldigimiz outputlari json headerlariyla client'a gonderdik. }) app.listen(port, () => { console.log(`${port} listening`); })
@Arlong selam hocam.
Mesajina buradan cevap vermek istedim zira mesaj kutusunda indenting kahroluyor :P Bana gonderdigin kodla duzenledigim halini yan yana koy incele bakalim. Aklina takilanlari soruverirsin dilersen.
hocam tıkır tıkır çalışıyor eline sağlık.
bundan sonrasını ben hallederim artık senin yöntemlerinden faydalanarak. teşekkür ederim çok.