--- title: Promise.prototype.then() slug: Web/JavaScript/Reference/Global_Objects/Promise/then translation_of: Web/JavaScript/Reference/Global_Objects/Promise/then ---
Promise
-Objekt zurück. Sie benötigt zwei Argumente, jeweils eine Callback-Funktion für den Erfolg und den Fehlschlag des Promise
.p.then(onFulfilled, onRejected); p.then(function(value) { // fulfillment }, function(reason) { // rejection });
Promise
erfüllt wurde. Die Funktion hat ein Argument, den Rückgabewert value
.Promise
fehlschlägt. Die Funktion hat ein Argument, den Grund für den Fehlschlag: reason
. Ist keine Funktion definiert, so wird sie intern durch die "Thrower" Funktion ersetzt (Dieser gibt einen Fehler als Argument zurück)Die then
- und {{jsxref("Promise.prototype.catch()")}}-Methoden, können, da sie Promises zurückgeben, verkettetet werden — ein Vorgehen, das composition genannt wird.
then
-Methodevar p1 = new Promise(function(resolve, reject) { resolve("Success!"); // or // reject ("Error!"); }); p1.then(function(value) { console.log(value); // Success! }, function(reason) { console.log(reason); // Error! });
Da die then
-Methode einen Promise
zurückliefert, können then
-Aufrufe leicht verkettet werden.
var p2 = new Promise(function(resolve, reject) { resolve(1); }); p2.then(function(value) { console.log(value); // 1 return value + 1; }).then(function(value) { console.log(value); // 2 }); p2.then(function(value) { console.log(value); // 1 });
Spezifikation | Status | Kommentar |
---|---|---|
{{SpecName('ES2015', '#sec-promise.prototype.then', 'Promise.prototype.then')}} | {{Spec2('ES2015')}} | Initiale Definition in einem ECMAScript-Standard. |
{{CompatibilityTable}}
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 32 | {{CompatGeckoDesktop(29.0)}} [1] | {{CompatNo}} | 19 | 7.1 |
Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|
Basic support | {{CompatNo}} | {{CompatGeckoMobile(29.0)}} [1] | {{CompatNo}} | {{CompatNo}} | 8 | 32 |
[1] Gecko 24 besitzt, unter dem Namen Future, eine experimentielle Implementation von Promise. In Gecko 25 wurde der Name final festgelegt aber standardmäßig durch die Einstellung dom.promise.enabled
deaktiviert. Durch Bug 918806 wurden Promises in Gecko 29 standardmäßig aktiviert.