Nodejs Promise Pending Hatası
-
müridler merhaba.
node js ile tronweb üzerinden blockları çekmeye çalıştığımda promise pending diye bir mesaj alıyorum aslında hata değil async/await ile çözülüyormuş sanırım anladığım akdarı ile ama konunun yenisi olduğum için nasıl çözeceğimi bilemedim bir türlü.
last_tron_block isimli değeri console.log ettiğimde promise pending geliyor.
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'); let last_tron_block
=tronWeb.trx.getCurrentBlock().then(function(result){ result => { return result.block_header.raw_data.number; } }) console.log(last_tron_block);
-
let last_tron_block =tronWeb.trx.getCurrentBlock().then(function(result) { console.log(result.block_header.raw_data.number); })
bu sekılde denermısın bır
-
async function getAssets() { // awaiting let last_tron_block = await tronWeb.trx.getCurrentBlock().then(function(result) { result => { return result.block_header.raw_data.number; } }) } getAssets();
crystalmeth tarafından 02/Haz/21 13:22 tarihinde düzenlenmiştir -
lazz bunu yazdı
let last_tron_block =tronWeb.trx.getCurrentBlock().then(function(result) { console.log(result.block_header.raw_data.number); })
bu sekılde denermısın bır
o şekilde console basıyor değeri ancak bir kaç satır sonra kullanmak istediğimde gene promise pending veriyor.
let last_tron_block =tronWeb.trx.getCurrentBlock().then(function(result) {
console.log(result.block_header.raw_data.number);
})
console.log(last_tron_block); //promise pending
-
crystalmeth bunu yazdı
async function getAssets() { // awaiting let last_tron_block = await tronWeb.trx.getCurrentBlock().then(function(result) { result => { return result.block_header.raw_data.number; } }) } getAssets();
bu şekilde denedim aynı şekilde promise pending
async function getAssets() {
// awaiting
let last_tron_block = await tronWeb.trx.getCurrentBlock().then(function(result) {
result => {
return result.block_header.raw_data.number;
}
})
}
console.log(getAssets());
-
async function getAssets() { let last_tron_block = await tronWeb.trx.getCurrentBlock(); console.log(last_tron_block.block_header.raw_data.number); return last_tron_block; } console.log(getAssets());
birde bu sekılde denermısın
-
veya şöyle
const getAssets = async () => { const last_tron_block = await tronWeb.trx.getCurrentBlock(); console.log(`last_tron_block is: ${ last_tron_block }`); }; getAssets();
-
lazz bunu yazdı
async function getAssets() { let last_tron_block = await tronWeb.trx.getCurrentBlock(); console.log(last_tron_block.block_header.raw_data.number); return last_tron_block; } console.log(getAssets());
birde bu sekılde denermısın
ilk console log ekrana numarayı basıyor ama fonksiyonun dışındaki console.log promise pending veriyor.
acaba değeri fonksiyon dışında kullanmakta mı bir yanlış yapıyorum.
console.log(last_tron_block.block_header.raw_data.number); //bu çalışıyor
console.log(getAssets()); //bu pending
-
son satırdakı loguda senın kullandıgın fonksıyonda cagırman lazım await ile
console.log( await getAssets() );
şeklinde
-
Olmuyor ya yapamadım bir türlü ben bu işin mantığını anlayamadım
-
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) })()