Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengendalikan Resolusi Janji dengan Berkesan dalam JavaScript Asynchronous?

Bagaimanakah Saya Boleh Mengendalikan Resolusi Janji dengan Berkesan dalam JavaScript Asynchronous?

Susan Sarandon
Susan Sarandonasal
2024-12-23 11:47:33758semak imbas

How Can I Effectively Handle Promise Resolutions in Asynchronous JavaScript?

Janji dan Pelaksanaan Asynchronous

Fungsi tak segerak membolehkan pemprosesan tidak menyekat dengan melaksanakan tugas serentak, mengembalikan janji yang mewakili hasil operasi. Walau bagaimanapun, apabila dilaksanakan tanpa pengendalian yang betul, fungsi tak segerak mungkin menghasilkan Janji { } pemegang tempat dan bukannya nilai yang dijangkakan.

Dalam coretan kod yang disediakan, fungsi AuthUser mengembalikan janji yang mewakili hasil fungsi google.login. Walau bagaimanapun, panggilan seterusnya kepada AuthUser dalam userToken = AuthUser(data) menghasilkan janji yang tidak dapat diselesaikan kerana tiada panggilan balik digunakan untuk mengendalikan resolusinya.

Mengendalikan Resolusi Janji

Untuk menangkap keputusan janji, a .then or .catch kaedah mesti dilampirkan pada janji. Kaedah ini membolehkan anda mengendalikan resolusi janji atau penolakan, masing-masing.

Pengubahsuaian berikut menangkap nilai janji userToken dalam panggilan balik:

let userToken = AuthUser(data);
userToken.then(function(result) {
   console.log(result); // "Some User token"
});

Memahami Tingkah Laku Resolusi Janji

Janji sememangnya menghala ke hadapan. Setelah diselesaikan, hasilnya diserahkan kepada pengendali .then atau .catch, tanpa mengira keadaan semasa janji itu. Pengendali .then berikut akan sentiasa menerima nilai janji berantai yang telah diselesaikan yang dikembalikan dalam .then sebelumnya.

Butiran Resolusi Janji

  1. Nilai yang dikembalikan oleh fungsi .then menjadi nilai janji yang diselesaikan.
  2. Jika fungsi .then mengembalikan janji, nilai yang diselesaikan itu janji berantai diserahkan kepada yang berikut .kemudian.

Contoh Demonstrasi

  1. Pulangan Nilai:

    initPromise()
      .then(function(result) {
     console.log(result); // "initResolve"
     return "normalReturn";
      })
      .then(function(result) {
     console.log(result); // "normalReturn"
      });
  2. Janji Rantaian:

    initPromise()
      .then(function(result) {
     console.log(result); // "initResolve"
     return new Promise(function(resolve, reject) {
        setTimeout(function() {
           resolve("secondPromise");
        }, 1000)
     })
      })
      .then(function(result) {
     console.log(result); // "secondPromise"
      });

Dengan mematuhi prinsip ini, anda boleh mengendalikan operasi tak segerak dengan berkesan dan menangkap nilai diselesaikannya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Resolusi Janji dengan Berkesan dalam JavaScript Asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn