2012-12-01 35 views
0

我使用node.js,RailwayJS和JugglingDB。不能获得异步JavaScript工作

我有一个模型:

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

一旦这一切都做只title设置的属性。这并不令人意外,但我无法实现它的工作。我尝试使用async模块,但没有运气。

回答

0

Model.afterInitialize是第三方API,我不能改变的一部分,所以遗憾的是没有办法做到这一点。我希望某种无限循环检查一个标志会起作用,但它不起作用,即使它起作用,它也是一个闪光。

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

FYI我正在使用https://github.com/1602/jugglingdb

1

如果Sequence.getSequence是异步的,当调用时,serialId将在回调中设置为。由于它是异步的,因此Model.afterInitialize返回后可能是。如果您必须执行取决于设置的serialId的操作,请从Sequence.getSequence回拨中触发它们。

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