Promise: then versus catch
Apakah potongan kode ini sama? Dengan kata lain, apakah mereka berperilaku sama dalam situasai apapun, untuk setiap handler functions?
promise.then(f1).catch(f2);
Versus:
promise.then(f1, f2);
Jawaban singkatnya adalah: tidak, mereka tidak sama:
Perbedaannya adalah bahwa jika terjadi sebuah error di dalam f1
, kemudian ditangani oleh .catch
disini:
promise.then(f1).catch(f2);
…Tetapi bukan disini:
promise.then(f1, f2);
Itulah kenapa sebuah error diturunkan ke chain, dan didalam bagian kode kedua disana tidak ada chain dibawah f1
.
Dengan kata lain, .then
meneruskan result/error ke .then/catch
selanjutnya. Jadi pada contoh pertama, ada sebuah catch
di bawah, dan yang kedua – disana tidak ada, jadi error tidak ditangani.