add doc about race condition when doing autocompletion
This commit is contained in:
parent
0214e4d17b
commit
4ca3a74187
1 changed files with 24 additions and 0 deletions
|
@ -209,6 +209,30 @@ même message.
|
|||
Contrairement aux autres éléments, les boutons doivent se faire collecter via
|
||||
la fonction [`collect`](./src/buttons/loader.ts#L46) juste après leur déclaration.
|
||||
|
||||
## Autocomplétion
|
||||
|
||||
La réponse qu'attent Discord doit se faire obligatoirement sous 3 secondes.
|
||||
Pour se faire on peut utiliser un timeout avec
|
||||
[une race](https://fr.wikipedia.org/wiki/Situation_de_comp%C3%A9tition).
|
||||
|
||||
```typescript
|
||||
let timeoutId: NodeJS.Timeout;
|
||||
const delay = new Promise(function (_, reject) {
|
||||
timeoutId = setTimeout(function () {
|
||||
reject(new Error());
|
||||
}, 2900); // correspond au temps du timeout en ms
|
||||
});
|
||||
|
||||
const resultat = await Promise.race([delay, commandeQuiRenvoieUnPromise])
|
||||
.then((res) => {
|
||||
clearTimeout(timeoutId);
|
||||
return resultatVoulu;
|
||||
})
|
||||
.catch(() => {
|
||||
return resultatErreur; // correspond à temps écoulé ou erreur de notre commande
|
||||
});
|
||||
```
|
||||
|
||||
## Modifier du code
|
||||
|
||||
Quand vous modifiez quelque chose, pensez à mettre-à-jour les langues. Si vous
|
||||
|
|
Loading…
Reference in a new issue