【问题标题】:Cannot get async javascript to work无法让异步 javascript 工作
【发布时间】:2012-12-01 13:51:31
【问题描述】:

我正在使用 node.js、RailwayJS 和 JugglingDB。

我有一个模型:

Model.afterInitialize = function() {
  var me = this;
  Sequence.getSequence('forModel', function(sequence) {
    me.serialId = sequence;
  });
  me.title = 'Hello';
}

一旦完成,只设置属性title。这并不奇怪,但我无法让它发挥作用。我尝试使用 async 模块,但没有成功。

【问题讨论】:

    标签: javascript node.js railway.js


    【解决方案1】:

    添加了一个回调参数以便能够链接。

    Model.afterInitialize = function(then)
    {
      then = then || function(me) { };
    
      var me = this;
    
      Sequence.getSequence('forModel', function(sequence)
      {
        me.serialId = sequence;
        me.title = 'Hello';
    
        then.call(null, me);
      });
    };
    

    【讨论】:

      【解决方案2】:

      如果Sequence.getSequence 是异步的,serialId 将从回调中设置,它被调用。由于它是异步的,这可能是 Model.afterInitialize 返回之后。如果您必须执行依赖于设置的serialId 的操作,请从Sequence.getSequence 回调中触发它们。

      【讨论】:

        【解决方案3】:

        Model.afterInitialize 是我无法更改的第三方 API 的一部分,因此很遗憾无法做到这一点。我希望某种无限循环检查标志会起作用,但它不起作用,即使它确实起作用,它也将是一个障碍。

        我最终连接到另一个方法 Model.beforeSave = function(callback) {};,它需要回调。

        仅供参考,我使用的是https://github.com/1602/jugglingdb

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-04-07
          • 1970-01-01
          • 2020-05-22
          • 1970-01-01
          • 1970-01-01
          • 2019-11-12
          • 1970-01-01
          • 2010-10-08
          相关资源
          最近更新 更多