将数组从异步函数节点 js 发送到 html
Posted
技术标签:
【中文标题】将数组从异步函数节点 js 发送到 html【英文标题】:Send array from async function node js to html 【发布时间】:2022-01-03 22:34:05 【问题描述】:我正在尝试将一个 js 数组从我的节点 js 后端发送到我的 html,但 HTML 中的对象是一个 Promise 对象,我怎样才能正确发送该数组?
我收到此错误 =
Uncaught SyntaxError: Unexpected identifier
console.log([object Promise]);
后端:
const path = require('path');
const fs = require("fs");
const host = "127.0.0.1";
const port = 1337;
const express = require("express");
const ejs = require("ejs");
const server = express();
server.use(express.static(path.join(__dirname, 'public')));
server.use(express.static(path.join(__dirname + '/js')));//middleware
server.use(express(__dirname));
server.set('view engine','html');
server.engine('html', require('ejs').renderFile);
server.get("*", function(request, response)
response.render('index.html', obj: productArr);
);
const Shopify = require('shopify-api-node');
const shopify = new Shopify(
shopName: 'this.myshopify.com',
apiKey: 'apikey',
password: 'pass'
);
async function getJson()
return shopify.product.list();
let productArr = getJson();
//console.log(productArr);
server.listen(port, host);
console.log('Running at Port 1337');
前端
<script>
console.log(<%= obj %>);
</script>
【问题讨论】:
【参考方案1】:使用异步函数并等待承诺:
server.get("*", async function(request, response)
response.render('index.html', obj: await productArr);
);
有关async functions 和promises 的更多信息。
同样在您的index.html
中,您需要将对象转换为字符串并将<%=
更改为<%-
(不会转义文本):
<script>
console.log(<%- JSON.stringify(obj) %>);
</script>
更多关于JSON stringify和ejs的信息
【讨论】:
以上是关于将数组从异步函数节点 js 发送到 html的主要内容,如果未能解决你的问题,请参考以下文章
如何将 JSON 数据从节点 js 脚本发送到不同服务器上的 HTML 文件
套接字 io,节点 js,将图像/文件从服务器发送到客户端的简单示例
C# 从后台代码同步或异步注册Javascript到页面之RegisterStartupScript和RegisterClientScriptBlock的区别