aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/javascript/reference/global_objects/finalizationregistry/unregister/index.md
blob: a9ed6b5930ddd140c2259268f085074cdece3d68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
---
title: FinalizationRegistry.prototype.unregister()
slug: Web/JavaScript/Reference/Global_Objects/FinalizationRegistry/unregister
translation_of: Web/JavaScript/Reference/Global_Objects/FinalizationRegistry/unregister
browser-compat: javascript.builtins.FinalizationRegistry.unregister
---
{{JSRef}}

La méthode `unregister()` permet de retirer un objet donné d'un registre [`FinalizationRegistry`](/fr/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry).

## Syntaxe

```js
unregister(jetonDesenregistrement);
```

### Paramètres

- `jetonDesenregistrement`
  - : Le jeton utilisé par la méthode [`register()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry/register) lors de l'enregistrement de l'objet cible.

### Valeur de retour

`undefined`.

## Notes

Lorsqu'un objet cible a été récupéré, il ne fait plus partie du registre. Aussi, il n'est pas nécessaire d'utiliser `unregister()` dans les fonctions de rappel de nettoyage. Appelez uniquement `unregister` si vous n'avez pas reçu de fonction de rappel de nettoyage et que vous n'en avez plus besoin.

## Exemples

### Utiliser unregister()

Cet exemple illustre l'enregistrement d'un objet en l'utilisant lui-même comme jeton pour le retirer du registre par la suite via `unregister()` :

```js
class Bidule {
  #cleanup = label => {
  //         ^^^^^−−−−− valeur tenue
    console.error(`La méthode \`release\` n'a jamais été appelée pour l'objet avec l'étiquette "${label}"`);
  };
  #registry = new FinalizationRegistry(this.#cleanup);

  /**
   * Construit une instance `Bidule`. Assurez-vous d'appeler `release`
   * lorsque vous avez fini de vous en servir.
   *
   * @param   label       Une étiquette pour le `Bidule`.
   */
  constructor(label) {
    //                            vvvvv−−−−− valeur tenue
    this.#registry.register(this, label, this);
    //          cible  −−−−−^^^^         ^^^^−−−−− jeton de désenregistrement
  }

  /**
   * Libère les ressources tenues par cette instance de `Bidule` .
   */
  release() {
      this.#registry.unregister(this);
      //                        ^^^^−−−−− jeton de désenregistrement
  }
}
```

Dans l'exemple qui suit, on illustre l'enregistrement en utilisant un autre objet comme jeton de désenregistrement :

```js
class Bidule {
  #cleanup = label => {
  //         ^^^^−−−−− valeur tenue
    console.error(`La méthode \`release\` n'a jamais été appelée pour \`Bidule\` pour le fichier "${file.name}"`);
  };
  #registry = new FinalizationRegistry(this.#cleanup);

  /**
   * Construit une instance de `Bidule` pour le fichier donné.
   * Assurez-vous d'appeler `release` lorsque vous n'en avez plus
   * besoin.
   * @param   filename    Le nom du fichier.
   */
  constructor(filename) {
    this.#file = File.open(filename);
    //                            vvvvv−−−−− valeur tenue
    this.#registry.register(this, label, this.#file);
    //          cible  −−−−−^^^^         ^^^^^^^^^^−−−−− jeton de désenregistrement
  }

  /**
   * On libère les ressources tenues par cette instance de `Bidule`.
   */
  release() {
    if (this.#file) {
      this.#registry.unregister(this.#file);
      //                        ^^^^^^^^^^−−−−− jeton de désenregistrement
      File.close(this.#file);
      this.#file = null;
    }
  }
}
```

## Spécifications

{{Specifications}}

## Compatibilité des navigateurs

{{Compat}}

## Voir aussi

- [`FinalizationRegistry`](/fr/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry)