res.send возвращает [object Promise]

134
21 февраля 2021, 10:30

хочу отренедрить разметку, после получения данных из fetch, при попытке отправить разметку, отправляется [object Promise]

const express = require("express");
const async = require("express-async-await");
const app = express();
const fetch = require("node-fetch");

async function mapData(url) {
    const res = await fetch(url)
    const data = await res.json()
    return data.map(i => {
        return 
                `
                <item turbo="true">
                    <link>${i.url_node}</link>
                    <turbo:content>
                        <header>
                            <figure>
                                <img src="${i.photo}" />
                            </figure>
                            <h1>${i.title}</h1>
                        </header>
                        ${i.body}
                    </turbo:content>
                </item>
                `
    });
}
app.get("/", function(req, res){
  res.send(`${mapData('https://sasasa.ru/json/news_feed/')}`);
});
app.listen(3000);
Answer 1

Асинхронная функция по умолчанию возвращает промис. Если в самой функции возвращается какое-то значение, то это значение просто попадает в промис.

async function foo() {
  return 10
}
foo().then(console.log); // 10

Поэтому нужно использовать await, он дождется резолва промиса и вернет именно значение

async function foo() {
  return 10
}
const result = await foo();
console.log(result);
READ ALSO
Смена цвета фона на градиент по нажатию JavaScript

Смена цвета фона на градиент по нажатию JavaScript

Есть блок с тестом, который меняет цвет фона по нажатию на кнопкиКак выставить в JS цвет так, чтобы он менялся на градиент

116
Остановить CSS анимацию

Остановить CSS анимацию

Помогите решить вопрос, или подскажите как остановить css анимациюЕсть такой вот прелоадер, нужно оставить анимацию когда виден весь круг...

103