crypto = require('crypto')
async function generateToken(){
await crypto.randomBytes(256,function(ex, buffer) {
if (ex) {
console.log("error generating token");
}
var token = crypto
.createHash('sha1')
.update(buffer)
.digest('hex');
console.log(token);
}
)}
console.log("before token");
generateToken();
console.log("after token");
В приведенном выше коде я хотел синхронизировать метод generateToken()
. Поэтому я добавил async
и await
к функции, но я не получаю ожидаемый результат, который составляет
before token
7f4f27037cd7dd65bd03d7e2fe859e608b9eebe2
after token
вывод, который я получаю
before token
after token
7f4f27037cd7dd65bd03d7e2fe859e608b9eebe2
Что я делаю не так в приведенном выше коде?
редактирование:
следующий код будет работать, но он не синхронизирован.
crypto = require("crypto");
function generateToken() {
return new Promise((resolve, reject) => {
crypto.randomBytes(256, function(ex, buffer) {
if (ex) {
reject("error generating token");
}
const token = crypto
.createHash("sha1")
.update(buffer)
.digest("hex");
resolve(token);
});
});
console.log(token);
}
console.log("before token");
generateToken().then((token) => {
console.log(token);
console.log("after token");
});