【发布时间】:2016-05-19 09:40:49
【问题描述】:
我要调用这个异步回调函数:
var glob = require('glob');
var globResults = undefined;
function globAsync(callback) {
glob('*.jpg', { cwd: 'public/portfolio/weddings/', sort: true }, function (err, files) {
var results = JSON.stringify(files);
globResults = results;
callback();
});
};
function globCaller() {
var g = globResults;
console.log('STRING: ' + g);
return g;
};
globAsync(globCaller); // This will init globCaller()
在这个 Node.js 路由器内部:
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('portfolio', {
layout: 'main',
centering: true,
titleShown: false,
title: 'Hi!',
description: 'Home page of Lantos Istvan Photography',
keywords: 'wedding,photography,film,lantos,istvan',
bodyClass: 'horizontal',
imagesFolder: '\/portfolio\/weddings\/',
images: globCaller()
});
});
我希望在上面的示例中将这个预期的输出放在images: 之后(在控制台中显示):
["image-1.jpg","image-10.jpg","image-11.jpg","image-12.jpg"]
我该怎么做?
我也有这个车把文件:
{{#each images}}
<li><img src="{{../imagesFolder}}{{this}}.jpg" alt=""></li>
{{else}}
<p class="empty">No content</p>
{{/each}}
有时在 html 输出中呈现的输出是:
<li><img src="/portfolio/weddings/image-1.jpg,image-10.jpg,image-11.jpg,..." alt="" /></li>
但我想要:
<li><img src="/portfolio/weddings/image-1.jpg" alt="" /></li>
<li><img src="/portfolio/weddings/image-10.jpg" alt="" /></li>
<li><img src="/portfolio/weddings/image-11.jpg" alt="" /></li>
【问题讨论】:
-
globAsync是否在不同的模块中? -
我按照这里的教程来获取异步回调的结果:github.com/maxogden/art-of-node#callbacks我是 JS 新手。
-
您应该将
globResults设为globCaller的参数(以及callback调用的参数)。 -
… images: globCaller() …没有意义。 -
如果要数组,为什么要通过
JSON.stringify()传递结果?只需删除该行。
标签: javascript node.js object express asynchronous