gpt4 book ai didi

node.js - express/node,理解渲染模板和异步模型

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:46 24 4
gpt4 key购买 nike

我在理解我的应用程序在加载 JSON 和渲染模板方面应如何正确运行时遇到了一些困难。

想象一下有路线仪表板,我想从外部 API 收集一些数据。我创建了自定义文件(tools.js),它有一个从( https.request(options, function(res)) {...} )中编写的源获取数据的函数,所以基本上该过程如下所示:

  1. 我在浏览器中打开我的路线(tools.js 开始从外部 API 收集 JSON)
  2. 模板呈现,tools.js 调用的结果仍然未定义
  3. tools.js 刚刚结束加载,在控制台中显示正确的数据,但模板已经呈现为未定义的结果。

我希望这是有道理的。我明白,这是预期的行为,但是从 tools.js 获取数据后如何“重新渲染”模板?

最佳答案

你需要做这样的事情:

工具.js:

var https = require('https');

var options = ...

exports.getData = function(cb) {
var done = false;
function errorHandler(err) {
if (!done) {
done = true;
cb(err);
}
}
https.request(options, function(res) {
var buf = '';
res.setEncoding('utf8');
res.on('data', function(d) {
buf += d;
}).on('end', function() {
if (!done) {
done = true;
var ret;
try {
ret = JSON.parse(buf);
} catch (ex) {
return errorHandler(ex);
}
cb(null, ret);
}
}).on('error', errorHandler);
}).on('error', errorHandler).end();
};

路线:

var getData = require('./tools').getData;

// ...

app.get('/json', function(req, res) {
getData(function(err, data) {
if (err) return res.send(500);
res.render('mytemplate', { jsondata: data });
});
});

关于node.js - express/node,理解渲染模板和异步模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26113164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com