[英]How to display the data returned from an async function in .ejs?
我將包含異步函數的對象傳遞給 .ejs 文件
const express = require('express')
const app = express()
const PORT = process.env.PORT || 3000
const functions = require('./functions.js')
app.set('view-engine', 'ejs')
app.listen(PORT, () => {
console.log('listening on 3000', new Date())
})
app.get('/', (req, res) => {
res.render('dashboard.ejs', { functions })
})
功能控制台記錄數據並返回它
const getPrice = async (coin) => {
let data = await CoinGeckoClient.coins.fetch(coin);
console.log(coin, "GBP", data.data.market_data.current_price.gbp)
console.log(data.data.market_data.price_change_percentage_24h, '% / 24 hours')
return `
${coin} "GBP" ${data.data.market_data.current_price.gbp}
${data.data.market_data.price_change_percentage_24h}% / 24 hours')
`
};
我想在 .ejs 文件中呈現返回的數據。 我正在嘗試這個
<body>
<p>
<%= functions.getPrice('ethereum') %>
</p>
</body>
刷新瀏覽器時控制台日志成功
ethereum GBP 3141.5
3.00725 % / 24 hours
所以函數被調用,但數據沒有呈現到屏幕上。
我反而得到 [object Promise]。
我覺得這是一個異步問題,但不確定如何/是否可以讓 ejs 等待返回的數據。 我是否錯誤地構造了這個?
任何幫助,不勝感激!
您可以在 JS 文件中調用您的函數,然后將結果傳遞給 EJS 文件:
app.get('/', async(req, res) => {
res.render('dashboard.ejs', { price: await functions.getPrice('ethereum')})
})
然后在你的 EJS 中:
<body>
<p>
<%= price %>
</p>
</body>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.