无法获得异步javascript工作

时间:2012-12-01 13:51:31

标签: javascript node.js railway.js

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

我有一个模特:

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

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

3 个答案:

答案 0 :(得分:2)

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

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);
  });
};

答案 1 :(得分:1)

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

答案 2 :(得分:0)

Model.afterInitialize是我无法更改的第三方API的一部分,因此很遗憾无法执行此操作。我希望对某个标志进行某种无限循环检查可以正常工作,但事实并非如此,即使它确实有效也会成为一种躲避。

我最终挂钩了另一个需要回调的方法Model.beforeSave = function(callback) {};

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