[英]Calling result of a function call as a function in javascript/node.js
[英]Javascript: Call function inside Node.js object
我想调用此异步回调函数:
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:
之后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>
仅在glob()的回调中包含res.render()而不是具有所有全局变量就更简单了:
/* GET home page. */
router.get('/', function(req, res, next) {
glob('*.jpg', { cwd: 'public/portfolio/weddings/', sort: true }, function (err, files) {
var results = JSON.stringify(files);
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: results
});
});
});
编辑:评论中讨论的替代解决方案
function globAsync(params, callback) {
glob(params.wildcard || '*.jpg', {
cwd: params.cwd || 'public/portfolio/weddings/',
sort: true
}, function(err, files) {
if (err) {
return callback(err);
}
// Do anything else with the results (files) if you need to here
callback(null, files); // null means no error, return results in callback
});
}
router.get('/', function(req, res, next) {
globAsync({
wildcard: '*.jpg', // use default in globAsync if not passed in
cwd: 'public/portfolio/weddings/' // use default in globAsync if not passed in
}, function(err, results) {
if (err) {
return res.send(err);
}
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: results
});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.