javascript - 在回调中重用变量/对象

标签 javascript node.js callback

我想知道,在下面的示例中,处理重用我的 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');
        }
      });
    }
  }
};

无论如何,将整个模块作为对象的属性确实非常荒谬。

关于javascript - 在回调中重用变量/对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10093905/

相关文章:

javascript - 根据所选值填充下拉列表

javascript - pwa - 提示添加到主屏幕不显示

javascript - 服务器在静态网站上渲染 React js

javascript - "this"javascript 回调函数中的关键字

python - 是否可以使用 Spotify Web API 编写没有回调 URI 的桌面应用程序?

javascript - 仅使用 JavaScript 删除 iframe 脚本标签

javascript - 添加 jQuery 验证方法时 this.optional(element) 做了什么?

node.js - 如何自定义Hapi.js访问日志?

node.js - 从 Node 中的模块加载特定文件

Android AChartEngine graphicalView 分享事件