如何等待某个耗时操作的返回值
已经解决!!
18 updatePass: function(passwd) {
19 var status;
20 this.updateAttributes({passwd: passwd}).on('success', function(msg){
21 status = "success";
22 console.log(msg);
23 console.log("statusstatus:"+status);
24 return status;
25 }).on('failure', function(err){
26 status = "error";
27 console.log(err);
28 console.log("statusstatus:"+status);
29 return status;
30 });
31 }
然后在另一个文件里调用了该函数:
247 status = model.updatePass(newPasswd);
248 console.log(status);
这里我始终无法获得status的值,因为248行的打印始终是在updatePass之前完成。我该怎么办
4 回复
同学你使用node的方法就是错误的。node是异步的~~
updatePass: function(passwd,callback) {
var status;
this.updateAttributes({passwd: passwd}).on('success', function(msg){
status = "success";
console.log(msg);
console.log("statusstatus:"+status);
callback(null, status);
}).on('failure', function(err){
status = "error";
console.log(err);
console.log("statusstatus:"+status);
callback(err);
});
}
model.updatePass(newPasswd,function(err,status){
console.log(status);
});
同步思维是程序员原始的思维还是后来养成的。。
噢,知道了。我错了。之前是放到回调函数里,结果没有运行,我以为是写在数据库定义文件中的updatePass中无法使用回调,结果是因为监听success后没有显示callback。。。
谢谢了,感激不尽~~
额,这个= =。