在回调中重用变量/对象
Re-use variables/objects in callbacks
我想知道,在下面的示例中,处理重用我的helpers
对象的最佳方法是什么?
var test = {
Projects: 'an object goes here',
helpers: require('../helpers'),
test: function(req, res) {
if (this.helpers.is_post(req)) {
// tried this
var test = this.helpers;
this.Projects.byCode(req.params.project_code, function(project) {
if (!project) {
this.helpers.flash(req, 'error', 'Unable to find project.');
// tried this
helpers.flash(req, 'error', 'Unable to find project.');
res.redirect('/projects');
}
});
}
}
};
我知道我不能在回调中重用变量、对象等,因为它们不会在同一运行时执行,但仍然必须有某种更好/更清晰的方法来做这样的事情?
即使我尝试将this.helpers重新分配给另一个变量,它也给了我错误,说它是未定义的。
谢谢!
为什么你认为你不能在回调中重用变量?它们不仅在同一运行时中执行,而且在同一线程中执行!这就是 JavaScript 的美妙之处。
相反,您的问题可能是对此的误用。例如,如果没有分配给var test = this.helpers
,它肯定不起作用。如果您像这样调用该方法,即使这样也不起作用:
var testIt = test.test;
testIt(req, res);
请尝试类似以下内容的操作:
var helpers = require('../helpers');
var test = {
Projects: 'an object goes here',
test: function(req, res) {
if (helpers.is_post(req)) {
this.Projects.byCode(req.params.project_code, function(project) {
if (!project) {
helpers.flash(req, 'error', 'Unable to find project.');
res.redirect('/projects');
}
});
}
}
};
无论如何,将整个模块作为对象的属性确实非常荒谬。
相关文章:
- 替换另一个变量对象中的变量值
- 如何从表单变量对象中获取特定的from属性
- 变量/对象是否按值传递,为什么我不能在 javascript 中使用变量更改对象的属性
- 执行上下文和变量对象在 JavaScript 中实际上是一回事吗?
- 如何将变量对象传递到多个javascript弹出窗体
- 如何将javascript变量/对象从一个页面传递到另一个页面
- 在具有递增的变量/对象中存储和控制传单 GeoJSON 图层
- 在回调中重用变量/对象
- 给一个有1个变量/对象的函数给定几个参数
- 使用单词'英语'因为变量/对象名称在javascript中不起作用
- 如何访问变量对象中的数据
- 使用onclick调用变量对象中的函数
- 使用Underscore JS部分和for循环的未定义变量对象
- 如何查看我的变量对象
- 变量对象属性名称作为javascript中的参数
- 从变量对象中移除DOM元素,以便将其发布到服务器
- 根据变量对象是否等于“true”输出内容
- 如何连接(变量+对象键名)以获得点表示法的对象值
- 为什么在ES5中将变量对象改为词法环境
- 动态引用变量(对象)