Ich warte derzeit darauf, dass all das Versprechen nacheinander wie folgt endet:
(async() => {
let profile = await profileHelper.getUserData(username);
let token = await tokenHelper.getUserToken(username);
console.log(profile);
console.log(token);
return {profile: profile, token: token};
})();
Auf diese Weise werden Profil und Token jedoch nacheinander ausgeführt. Da beide unabhängig voneinander sind, möchte ich, dass beide unabhängig voneinander ausgeführt werden. Ich denke, dass dies mit Promise.all möglich ist, aber ich bin mir der Syntax nicht sicher und konnte auch keine Hilfe finden.
Meine Frage ist also, wie ich über API-Aufrufe konvertieren kann, um zusammen zu laufen und dann die endgültige Ausgabe zurückzugeben.
(async() => {
const [ profile, token ] = await Promise.all([
profileHelper.getUserData(username),
tokenHelper.getUserToken(username)
]);
return { profile, token };
})();
benutze Promise.all()
Methode:
(async() => {
let [ profile, token ] = await Promise.all(
[profileHelper.getUserData(username),
tokenHelper.getUserToken(username)
])
return {profile: profile, token: token};
})();
Warten Sie, bis alle ES6-Versprechen vollständig sind, sogar abgelehnte Versprechen
Sie möchten Promise.all verwenden
Die Methode Promise.all (iterable) gibt ein einzelnes Promise zurück, das .__ auflöst. wenn alle Versprechen im iterierbaren Argument gelöst sind oder Wenn das iterable Argument keine Versprechungen enthält. Es lehnt mit der .__ ab. Grund des ersten Versprechens, das ablehnt.
(async() => {
const response = await Promise.all([
profileHelper.getUserData(username),
tokenHelper.getUserToken(username)
]);
return {profile: response[0], token: response[1]};
})();
Die Promise.all-Methode gibt ein einzelnes Promise zurück, das aufgelöst wird, wenn alle Versprechen im Argument aufgelöst wurden oder wenn das Argument keine Versprechen enthält.
exports.getServerDetails = async (req, res, next) => {
var getCount = [];
const [ onlineUser, countSchool ] = await Promise.all([
getOnlineUsers(), // online user count
getRegisterUser(), // register user
getRegisterSchools(), // register school count
]);
getCount = [
{"Online Users": onlineUser},
{"Registered Users" : countSchool}
];
sendJSONresponse(res, 200, {
status: 'success',
data: getCount
})
}
async function getOnlineUsers() {
return Login.count({'onlineStatus': 1}, (err, count) => {
if (err) {
return err;
}
return count;
});
}
async function getRegisterUser() {
return Login.count({}, (err, totResUser) => {
if (err) {
return err;
}
return totResUser;
})
}
async function getRegisterSchools() {
return Login.count({'role': 'Admin'},(err, totalSchool) => {
if (err) {
return err;
}
return totalSchool;
})
}