Penulis catatan itu, terjemahan yang kami terbitkan hari ini, mengatakan bahwa ia sulit menahan diri untuk tidak menyebutnya "Akhirnya - kesempatan yang ditunggu semua orang," atau entah bagaimana bercanda tentang topik ini. Pada akhirnya, ia memutuskan untuk melakukannya tanpa bercanda dan hanya berbicara tentang fitur yang sangat penting dan berguna dari benda-benda Janji.
Jika Anda baru mulai mempelajari JavaScript dan tidak terlalu akrab dengan janji (kadang-kadang disebut "janji", "hasil yang dijanjikan", "benda yang dijanjikan"), maka Anda mungkin tertarik dengan publikasi kami sebelumnya tentang topik ini:
โ 
Janji dalam ES6: pola dan anti-polaโ 
JavaScript: metode pemrograman tidak sinkronโ 
JavaScript ES8 dan transisi ke async / tungguโ 
Async / tunggu: 6 alasan untuk melupakan janjiโ 
Melarikan diri dari Neraka async / menungguโ 
JavaScript ES6: menulis lebih sedikit - berbuat lebih banyakโ 
Panduan Janji bagi mereka yang ingin menyelesaikannyaโ 
JavaScript async / tunggu desain: kekuatan, jebakan, dan pola penggunaanโ 
Menggunakan Janji dalam JavaScriptPromise.prototype. Akhirnya Metode
Klausa 
25.6.5.3 dari ECMAScript 2018 standar didedikasikan untuk 
metode Promise.prototype.finally Menurut 
caniuse.com , level dukungan untuk metode ini adalah sekitar 81%. Metode ini juga dapat digunakan di Node.js.
Metode janji 
finally adalah salah satu inovasi paling penting dari standar, yang memungkinkan Anda untuk menentukan fungsi yang akan dieksekusi terlepas dari hasil janji. Fungsi seperti itu akan terpenuhi jika janji berhasil diselesaikan dan jika ditolak.
Pertimbangkan sebuah contoh:
 const myPromise = new Promise((resolve, reject) => { setTimeout(() => { resolve('success!!!'); }, 2000); }); 
Ini adalah janji yang sangat umum yang diselesaikan setelah 2000 milidetik. Jika setelah itu kita perlu melakukan beberapa tindakan, kita perlu blokir 
then :
 myPromise.then( result => { console.log(result) }, failMessage => { console.log(failMessage) } ); 
Dua fungsi anonim diteruskan ke metode itu. Yang pertama akan dieksekusi jika janji berhasil diselesaikan. Yang kedua adalah ketika ditolak. Janji kami selalu berhasil diselesaikan, pesan 
success!!! akan selalu ditampilkan di konsol 
success!!! . Semua ini sangat baik, tetapi bagaimana jika perlu bahwa tindakan tertentu dilakukan setelah penolakan janji, dan setelah berhasil menyelesaikan pekerjaannya? Di sini metode yang 
finally akan membantu kita:
 const myPromise = new Promise((resolve, reject) => { setTimeout(() => { resolve('success!!!'); }, 2000); }); myPromise.then( result => { console.log(result) }, failMessage => { console.log(failMessage) } ).finally(finallyMessage => { console.log('FINALLY!!')}); 
Terlepas dari bagaimana janji itu menyelesaikan pekerjaannya, di samping pesan yang sesuai, teks 
FINALLY!! , yang memberitahu kita bahwa fungsi callback yang diteruskan ke metode 
finally berfungsi. Untuk memverifikasi ini - Anda dapat melakukan 
percobaan .
Ringkasan
Fakta bahwa metode Promise.prototype.finally muncul di ES2018 menunjukkan bahwa di masa mendatang kita dapat mengharapkan tingkat dukungan browser yang sangat tinggi. Ini berarti bahwa apa yang sebelumnya Anda harus gunakan alat bantu yang dibuat oleh pengembang pihak ketiga sekarang dapat diimplementasikan menggunakan alat standar.
Dalam situasi apa metode 
Promise.prototype.finally berguna? Misalnya - jika, ketika Anda memulai Janji yang digunakan untuk mengunduh sesuatu, beberapa animasi mulai diputar, pada 
finally Anda dapat menyelesaikan animasi ini. Di blok 
finally , Anda bisa, misalnya, menutup jendela modal tertentu. Bahkan, ada banyak situasi di mana metode yang 
finally mungkin berguna.
Pembaca yang budiman! Sudahkah Anda menggunakan pengganti untuk metode yang akhirnya dijanjikan sebelum penerapan standarnya?
