我有以下服务:
SomeService.js
module.exports = {
property:null,
foo:function(){
User.destroy({user_email:user.user_email}).exec(function(error,users){
this.property='somevalue'
});
}
}
当我像下面这样调用此服务时,它不会保留property
变量的值。
SomeService.foo();
console.log(SomeService.property) //returns null
如何使用Sails服务保留property
值?我如何像课一样使用它?也许它比Sails更像是一个JavaScript问题。我知道该对象与我使用它的方式不一样,但是有没有办法让我可以使用同一个对象进行服务?
更新:我已更新foo
,我认为此案例中的this
是指destroy
构造,而不是服务。
答案 0 :(得分:0)
从函数
null
开始,你很明显得到foo
正在调用异步方法。
foo:function(){
//the below functions is asynchronous so it is being pushed to event queue.
//and setting this.property='someValue' becomes asynchronous.
User.destroy({user_email:user.user_email}).exec(function(error,users){
this.property='somevalue'
});
};
所以在打电话时:
SomeService.foo();//this is asynchronous so does not block next executions.
console.log(SomeService.property)//this is not blocked by above call.
module.exports = {
property:null,
foo:function(){
User.destroy({user_email:user.user_email}).exec(function(error,users){
SomeService.property='somevalue';
console.log("Am i executed first???? Oh no I am the last among them");
});
}
};
而且这个:
SomeService.foo();
console.log(SomeService.property);
for(var i=2;i<10;i++)
console.log("I am called at number:",i);
所以我想你得到了它发生的原因。