为什么函数最终在节点js中执行

Why is the functions execute in finally in node js

在这里我的 req.body.newTransactionPassword="1234"; 我想加密那个值,但是 case is function is execute finally.I 想把它放到我的 order.Is 中,那可能..?

console.log("1");
    var nwtp=req.body.newTransactionPassword;
    var setPassword = function(nwtp,cb){
      console.log("2");
        bcrypt.genSalt( 10, function(err, salt) {
          bcrypt.hash(nwtp, salt, function(err, hash) {
            if (err) {
              console.log(err);
              return cb(err);
            } else {
              nwtp = hash;
              console.log(nwtp);
              return nwtp;

            }
          });
        });
    }
    setPassword(nwtp);
    console.log(nwtp);
    console.log("3");

输出是

1
2
1234
3
a$kVmybMj7SsD5ip11lCU3AOFd4ZdKL6/0DzKADYcplIDx9qdZJAy/a

我可以把它放到那个订单中吗?

1
2
a$kVmybMj7SsD5ip11lCU3AOFd4ZdKL6/0DzKADYcplIDx9qdZJAy/a
3
a$kVmybMj7SsD5ip11lCU3AOFd4ZdKL6/0DzKADYcplIDx9qdZJAy/a

你应该使用异步库https://github.com/caolan/async

那么,您的代码可能如下所示

var saltResult = null;
var hashResult = null;
async.series([

  function(next) {
    bcrypt.genSalt( 10, function(err, salt) {
      saltResult = salt;
      next(err);
    });
  },

  function(next) {
    bcrypt.hash(nwtp, saltResult, function(err, hash) {
        hashResult = hash;
        next(err);
    });
  }],

  function(err) {
    // your final processing here
  }
);