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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
---
title: IDBRequest
slug: Web/API/IDBRequest
tags:
- API
- Database
- IDBRequest
- IndexedDB
- Interface
- Reference
- Storage
- TopicStub
translation_of: Web/API/IDBRequest
---
<p>{{APIRef("IndexedDB")}}</p>
<p>L'interface <strong><code>IDBRequest</code></strong> de l'API IndexedDB donne accès par ses gestionnaires d'événements aux résultats des requêtes asynchrones sur la base de données, les magasins d'objets ou les index. Chaque opération d'écriture ou lecture sur la base de données utilise une requête.</p>
<p>Cet objet <strong><code>IDBRequest</code></strong> ne contient aucune information sur le résultat de l'opération, mais dès qu'une information est disponible un événement est déclenché. L'objet <strong><code>IDBRequest</code></strong> utilise ses gestionnaires d'événements pour le capter et mettre l'information à disposition.</p>
<p>Toute les opération asynchrone retourne immédiatement une instance <strong><code>IDBRequest</code></strong> avec une propriété <code>readyState</code> défini à <code>'pending'</code> qui passe à <code>'done'</code> lorsque la requête réussie ou échoue. Quand l'état passe à <code>done</code>, chaque requête retourne <code>result</code> et <code>error</code>, et un évènement est envoyé sur la requête. Quand l'état est sur <code>pending</code>, chaque accès à <code>result</code> ou <code>error</code> lève une exception <code>InvalidStateError</code>.</p>
<p>Pour faire simple, chaque méthode asynchrome retourne un objet de requête. Si l'opération réussi, le résultat est disponible dans la propriété <code>result</code> et un évènement <code>success</code> est lancé ({{domxref("IDBRequest.onsuccess")}}). Si une erreur est rencontrée, une exeption est disponible dans la propriété <code>error</code> et un évènement <code>error</code> est lancé ({{domxref("IDBRequest.onerror")}}).</p>
<p>L'interface {{domxref("IDBOpenDBRequest")}} est dérivé de <code>IDBRequest</code>.</p>
<p>{{AvailableInWorkers}}</p>
<p>{{InheritanceDiagram}}</p>
<h2 id="Propriétés">Propriétés</h2>
<p><em>Hérite des propriétés de {{domxref("EventTarget")}}.</em></p>
<dl>
<dt>{{domxref("IDBRequest.result","result")}} {{readonlyInline}}</dt>
<dd>La propriété <strong><code>result</code></strong> de l'interface <strong><code>IDBRequest</code></strong> renvoie le résultat de la requête. Si la requête est en cours, échoue ou que le résultat n'est pas disponible, l'exception <code>InvalidStateError</code> est levée.</dd>
<dt>{{domxref("IDBRequest.error","error")}} {{readonlyInline}}</dt>
<dd>La propriété <strong><code>error</code></strong> de l'interface <strong><code>IDBRequest</code></strong> indique le code de l'erreur survenue durant le traitement de la requête. Si la requête est en cours l'exception <code>InvalidStateError</code> est levée.</dd>
<dt>{{domxref("IDBRequest.source","source")}} {{readonlyInline}}</dt>
<dd>La propriété <strong><code>source</code></strong> de l'interface <strong><code>IDBRequest</code></strong> renvoie la source de la requête, tel qu'un {{domxref("IDBIndex","index")}}, un {{domxref("IDBObjectStore","magasin d'ojets")}} ou <code>null</code> s'il n'y a pas de source (lors de l'appel {{domxref("indexedDB.open")}} par exemple).</dd>
<dt>{{domxref("IDBRequest.transaction","transaction")}} {{readonlyInline}}</dt>
<dd>La propriété <strong><code>transaction</code></strong> de l'interface <strong><code>IDBRequest</code></strong> renvoie la {{domxref("IDBTransaction","transaction")}} dans laquelle on fait la requête. La propriété peut renvoyer <code>null</code> si requête se fait sans transaction, comme un objet IDBRequest renvoyé par {{domxref("IDBFactory.open")}} dans ce cas on est juste connecté à la base de données.</dd>
<dt>{{domxref("IDBRequest.readyState","readyState")}} {{readonlyInline}}</dt>
<dd>La propriété <strong><code>readyState</code></strong> de l'interface <strong><code>IDBRequest</code></strong> renvoie l'état de la requête. Chaque requête débute avec un statut <code>pending</code> et passe au statut <code>done</code> quand la requête réussie ou échoue.</dd>
</dl>
<h2 id="Méthodes">Méthodes</h2>
<p><em>Pas de méthodes spécifiques, mais hérite des méthodes de {{domxref("EventTarget")}}.</em></p>
<h2 id="Gestionnaire_dévénement">Gestionnaire d'événement</h2>
<p>On peut écouter les évènement avec <code>addEventListener()</code> ou bien en assignant un gestionnaire d'évènement à la propriété <code>on<em>eventname</em></code> de cette interface.</p>
<dl>
<dt>{{domxref("IDBRequest.onerror","onerror")}}</dt>
<dd>Le gestionnaire d'événement <strong><code>onerror</code></strong> de l'interface <strong><code>IDBRequest</code></strong> capte l'événement <code><a href="/en-US/docs/Web/Events/error">error</a></code>, déclenché quand une requête renvoie une erreur.</dd>
<dt>{{domxref("IDBRequest.onsuccess","onsuccess")}}</dt>
<dd>Le gestionnaire d'événement <strong><code>onsuccess</code></strong> de l'interface <strong><code>IDBRequest</code></strong> capte l'événement <code><a href="/en-US/docs/Web/Events/success">success</a></code>, déclenché quand la requête réussie.</dd>
</dl>
<h2 id="Exemple">Exemple</h2>
<p>Dans l'exemple suivant, on ouvre une base de données et on fait une requête. Les gestionnaires d'événement <code>{{domxref("IDBRequest.onsuccess","onsuccess")}}</code> et <code>{{domxref("IDBRequest","onerror")}}</code> sont inclus. Pour un exemple de travail complet, voir notre application <a href="https://github.com/mdn/to-do-notifications/">To-do Notifications</a> (<a href="http://mdn.github.io/to-do-notifications/">voir l'exemple en direct</a>).</p>
<pre class="brush: js notranslate">var db;
// Ouvre une base de données.
var DBOpenRequest = window.indexedDB.open("toDoList", 4);
// Ces deux gestionnaires d'événement interviennent quand la dase de
// de données s'ouvre ou non.
DBOpenRequest.onerror = function(event) {
note.innerHTML += '<li>Error loading database.</li>';
};
DBOpenRequest.onsuccess = function(event) {
note.innerHTML += '<li>Database initialised.</li>';
// Affecte le resutat de l'ouverture à la variable.
db = DBOpenRequest.result;
};</pre>
<h2 id="Spécifications">Spécifications</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Spécification</th>
<th scope="col">Statut</th>
<th scope="col">Commentaire</th>
</tr>
<tr>
<td>{{SpecName('IndexedDB', '#idbrequest', 'IDBRequest')}}</td>
<td>{{Spec2('IndexedDB')}}</td>
<td>Définition initiale.</td>
</tr>
<tr>
<td>{{SpecName("IndexedDB 2", "#request-api", "IDBRequest")}}</td>
<td>{{Spec2("IndexedDB 2")}}</td>
<td></td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility" name="Browser_compatibility">Compatibilité avec les navigateurs</h2>
<div>
<div>
<div>
<p>{{Compat("api.IDBRequest")}}</p>
</div>
</div>
</div>
<h2 id="Voir_aussi">Voir aussi</h2>
<ul>
<li><a href="/fr/docs/Web/API/IndexedDB_API/Using_IndexedDB">Utiliser IndexedDB</a></li>
<li>Démarrer une transaction: {{domxref("IDBDatabase")}}</li>
<li>Utiliser les transactions: {{domxref("IDBTransaction")}}</li>
<li>Définir un intervalle de clés: {{domxref("IDBKeyRange")}}</li>
<li>Récupérer et modifier vos données: {{domxref("IDBObjectStore")}}</li>
<li>utiliser les curseurs: {{domxref("IDBCursor")}}</li>
<li>Exemple de référence: <a class="external" href="https://github.com/mdn/to-do-notifications/tree/gh-pages">To-do Notifications</a> (<a class="external" href="http://mdn.github.io/to-do-notifications/">view example live</a>.)</li>
</ul>
|