如何等待某个耗时操作的返回值
发布于 10 年前 作者 telnetning 4046 次浏览 最后一次编辑是 8 年前

已经解决!!

 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。。。
谢谢了,感激不尽~~

额,这个= =。

回到顶部