Verzeiht meine totale Anfängerfrage, aber ich bin ratlos, und habe nicht viel mit JS zu tun…
app.get(bina_path, (req, res) => {
let price_dict = [];
all_pairs.forEach(n => {
const name = n + 'USDT';
binance.prices(name, (error, ticker) => {
if (error) {
console.error(error);
price_dict.push({
name: name,
price: -1
});
return;
}
console.log(ticker);
price_dict.push({
name: name,
price: ticker[name]
});
});
});
res.render('index', {
locals: {
page_title: 'Prices',
price_dict: price_dict
}
});
});
Problem: Bei der layout engine ejs kommt ein leeres Array an, die Seite wird also schon ausgeliefert, obwohl kein Ergebnis vorhanden ist, weil die binance.prices()-Aufrufe nicht blockieren (ich weiß nicht, wie man das in JS nennt).
Auf dieser Seite https://www.sitepoint.com/delay-sleep-pause-wait/
habe ich Folgendes gefunden:
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function delayedGreeting() {
console.log("Hello");
await sleep(2000);
console.log("World!");
}
delayedGreeting();
console.log("Goodbye!");
Das kann aber doch nicht die Lösung sein…
Wie macht man es richtig? Vielen Dank.