Sebuah janji adalah "hal" yang mewakili hasil "akhirnya" dari suatu operasi. Poin yang perlu diperhatikan di sini adalah, hal itu meringkas detail ketika sesuatu terjadi dan memungkinkan Anda untuk fokus pada apa yang harus terjadi setelah sesuatu itu terjadi. Ini akan menghasilkan kode yang bersih dan dapat dipertahankan di mana alih-alih memiliki panggilan balik di dalam panggilan balik di dalam panggilan balik, kode Anda akan terlihat seperti:
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
});
Spesifikasi janji menyatakan bahwa janji itu
then
Metode harus mengembalikan janji baru yang dipenuhi ketika suksesHandler yang diberikan atau callback kegagalanHandler selesai. Ini berarti bahwa Anda dapat menjalin janji bersama ketika Anda memiliki serangkaian tugas asinkron yang perlu dilakukan dan diyakinkan bahwa urutan operasi dijamin sama seperti jika Anda telah menggunakan panggilan balik. Jadi alih-alih meneruskan panggilan balik di dalam panggilan balik di dalam panggilan balik, kode dengan janji dirantai tampak seperti:
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
Untuk mengetahui lebih banyak tentang janji-janji dan mengapa janji itu sangat keren, periksa blog Domenic: http://domenic.me/2012/10/14/youre-missing-the-point-of-promises/