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
|
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.
|
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
|
## Modifier du code
|
||||||
|
|
||||||
Quand vous modifiez quelque chose, pensez à mettre-à-jour les langues. Si vous
|
Quand vous modifiez quelque chose, pensez à mettre-à-jour les langues. Si vous
|
||||||
|
|
Loading…
Reference in a new issue