Javascript/Node.js我可以使用hashmap有选择地执行函数吗?
Javascript/Node.js Can I use Hashmap to Selectively Execute Functions
我的应用程序有一个首选项列表,存储在JSON文件(preferences.json)中。我有一个相应的功能列表,我想根据首选项有选择地使用这些功能。每个函数的结果将添加到报告中。
preferences.json看起来像这样:
{
"getTemperature": true;
"getHumidity": false;
"getPrecipitation": true
}
这些函数位于我正在导入的模块中(函数.js)。他们像这样:
var getTemperature = function(){
//retrieve temperature;
//append temperature to file;
}
var getHumidity = function(){
//retrieve humidity;
//append humidity to file;
}
var getPrecipitation = function() {
//retrieve precipitation;
//append precipitation to file;
}
到目前为止我尝试过的方法,显然不起作用
var prefs = require('./preferences.json');
var funcs = require('./functions.js');
for (key in prefs){
if(prefs[key]) {
funcs.key(); // <- Doesn't work, b/c 'key()' isn't a function. But you get the idea.
}
}
如果您知道如何完成此操作,请告诉我。
我还没有尝试过的一个想法(它需要大量的代码重写)是将函数与首选项虚拟变量一起嵌套在伪类中。然后,我将使用首选项文件创建伪类的实例。我的想法是伪类实例将具有完整的首选项,我可以将选择性执行硬编码到每个函数中(即if(myInstance.tempBool){myInstance.getTemperature()})。不过,我宁愿迭代,因为还有更多函数,将来我可能会添加更多函数。
有什么想法吗?
从我上面评论的链接中调整答案并将其应用于您的情况:
您的函数.js文件将包含以下内容:
exports.weatherFunctions = {
var getTemperature = function(){
//retrieve temperature;
//append temperature to file;
}
var getHumidity = function(){
//retrieve humidity;
//append humidity to file;
}
var getPrecipitation = function() {
//retrieve precipitation;
//append precipitation to file;
}
}
按照上面尝试的那样,在您的文件中要求这样做:
var prefs = require('./preferences.json');
var funcs = require('./functions.js')
从这里您可以根据需要循环。
for (key in prefs){
if(prefs[key]) {
funcs.weatherFunctions[key]();
}
}
您可以使用函数名称作为键和函数作为值创建一个对象:
funcs = {
getTemperature: function(){
//retrieve temperature;
//append temperature to file;
}
getHumidity: function(){
//retrieve humidity;
//append humidity to file;
}
getPrecipitation: function() {
//retrieve precipitation;
//append precipitation to file;
}
}
如果要将它们放在单独的文件中并将它们与 var funcs = require('./functions.js');
一起使用,您可以放置:
module.exports = funcs
现在您的主文件几乎可以按原样工作。 您需要将行funcs.key();
更改为 funcs[key]();
。
相关文章:
- 在Javascript中一个接一个地执行一个函数
- 如何通过 phantomjs 可靠地执行利用 requirejs 的 Jasmine 测试
- Mozilla并没有完美地执行这段代码,尽管它适用于Chrome和IE
- Javascript使函数一个接一个地执行
- 如何在客户端Collection增长时立即反应性地执行代码
- Javascript:正在使用Jquery's bind()比简单地执行onclick='bla()
- 使用ajax的JavaScript函数不会一个接一个地执行
- 有选择地使用 MathJax 渲染方程
- JavaScript 库原型函数不一个接一个地执行
- 有选择地激活按钮
- 一个接一个地执行函数 JQUERY
- 在剑道网格中有选择地将编辑行中的单元格切换为编辑模式
- 用于对选择选项执行验证的 JavaScript 代码
- 是否可以有选择地限制 iframe 对其父文档的访问
- 如何告诉DDP有选择地观察更改某些字段,而不是所有定义的字段
- 有选择地使用 replace()
- 如何使用 geojson 有选择地启用 onEachFeature 函数
- Javascript/Node.js我可以使用hashmap有选择地执行函数吗?
- 为什么 ready() 中的函数在刷新页面时不系统地执行
- 如何在JavaScriptmashup中从多个源最佳地执行分页和排序