Ein Versprechen ist ein "Ding", das sozusagen die "möglichen" Ergebnisse einer Operation darstellt. Der Punkt hier zu beachten ist , dass es abstrahiert die Details , wenn etwas passiert , und ermöglicht es Ihnen , sich darauf zu konzentrieren , was passieren soll , nachdem das etwas passiert. Dies führt zu sauberem, wartbarem Code, bei dem anstelle eines Rückrufs innerhalb eines Rückrufs innerhalb eines Rückrufs Ihr Code ungefähr so aussieht:
var request = new Promise(function(resolve, reject) {
//do an ajax call here. or a database request or whatever.
//depending on its results, either call resolve(value) or reject(error)
//where value is the thing which the operation's successful execution returns and
//error is the thing which the operation's failure returns.
});
request.then(function successHandler(result) {
//do something with the result
}, function failureHandler(error) {
//handle
});
Die Spezifikation der Versprechen besagt, dass ein Versprechen ist
then
Die Methode sollte ein neues Versprechen zurückgeben, das erfüllt wird, wenn der angegebene SuccessHandler- oder FailureHandler-Rückruf beendet ist. Dies bedeutet, dass Sie Versprechen verketten können, wenn Sie eine Reihe von asynchronen Aufgaben haben, die ausgeführt werden müssen, und sicher sein können, dass die Reihenfolge der Vorgänge so gewährleistet ist, als hätten Sie Rückrufe verwendet. Anstatt einen Rückruf innerhalb eines Rückrufs innerhalb eines Rückrufs weiterzuleiten, sieht der Code mit verketteten Versprechungen folgendermaßen aus:
var doStuff = firstAsyncFunction(url) {
return new Promise(function(resolve, reject) {
$.ajax({
url: url,
success: function(data) {
resolve(data);
},
error: function(err) {
reject(err);
}
});
};
doStuff
.then(secondAsyncFunction) //returns a promise
.then(thirdAsyncFunction); //returns a promise
Um mehr über Versprechen zu erfahren und warum sie super cool sind, lesen Sie Domenics Blog: http://domenic.me/2012/10/14/youre-missing-the-point-of-promises/