Cara cek status janji javascript

"Saya Menjanjikan Hasil. "

"Memproduksi kode" adalah kode yang dapat memakan waktu

"Mengkonsumsi kode" adalah kode yang harus menunggu hasilnya

Janji adalah objek JavaScript yang menautkan produksi kode dan konsumsi kode

Objek Janji JavaScript

Objek Janji JavaScript berisi kode penghasil dan panggilan ke kode konsumsi

Sintaks Janji

biarkan Janjiku = Janji baru(fungsi(Resolusiku, Tolakku) {
// "Memproduksi Kode" (Mungkin membutuhkan waktu)

myResolve();
myReject();
});

// "Mengkonsumsi Kode" (Harus menunggu Janji terpenuhi)
janjiku. kemudian(
function(nilai) { /* kode jika berhasil */ },
function(error) { /* kode jika ada error */ }
);

Saat kode penghasil mendapatkan hasilnya, ia harus memanggil salah satu dari dua callback

ResultCallSuccessmyResolve(nilai hasil)ErrormyReject(objek kesalahan)

Menjanjikan Properti Objek

Objek Janji JavaScript bisa

Objek Janji mendukung dua properti. keadaan dan hasil

Saat objek Promise "tertunda" (berfungsi), hasilnya tidak terdefinisi

Saat objek Promise "terpenuhi", hasilnya adalah sebuah nilai

Saat objek Promise "ditolak", hasilnya adalah objek error

janjiku. statemyPromise. result"pending"undefined"fulfilled"a result value"rejected"an error object

Anda tidak dapat mengakses status dan hasil properti Promise

Anda harus menggunakan metode Janji untuk menangani janji


Janji Bagaimana

Inilah cara menggunakan Janji

janjiku. kemudian(
function(nilai) { /* kode jika berhasil */ },
function(error) { /* kode jika ada error */ }
);

Janji. kemudian() mengambil dua argumen, panggilan balik untuk sukses dan satu lagi untuk kegagalan

Keduanya opsional, sehingga Anda dapat menambahkan panggilan balik hanya untuk keberhasilan atau kegagalan

Contoh

function myDisplayer(beberapa) {
dokumen. getElementById("demo"). innerHTML = beberapa;
}

biarkan Janjiku = Janji baru(fungsi(Resolusiku, Tolakku) {
misalkan x = 0;

// Kode penghasil (ini mungkin membutuhkan waktu)

jika (x == 0) {
myResolve("Oke");
} kalau tidak {
myReject("Kesalahan");
}
});

janjiku. kemudian(
fungsi(nilai) {MyDisplayer(nilai);},
function(kesalahan) {myDisplayer(kesalahan);}
);

Cobalah sendiri "



Contoh Janji JavaScript

Untuk mendemonstrasikan penggunaan promise, kita akan menggunakan contoh callback dari bab sebelumnya

  • Menunggu Timeout
  • Menunggu File

Contoh Menggunakan Callback

setTimeout(function() { myFunction("Aku mencintaimu. "); }, 3000);

function myFunction(nilai) {
dokumen. getElementById("demo"). innerHTML = nilai;
}

Cobalah sendiri "

Contoh Menggunakan Janji

biarkan Janjiku = Janji baru(fungsi(Resolusiku, Tolakku) {
setTimeout(function() { myResolve("Aku mencintaimu. "); }, 3000);
});

janjiku. kemudian(fungsi(nilai) {
dokumen. getElementById("demo"). innerHTML = nilai;
});

Cobalah sendiri "


Contoh menggunakan Callback

fungsi getFile(myCallback) {
biarkan req = new XMLHttpRequest();
persyaratan. buka('DAPATKAN', "mobilku. html");
persyaratan. memuat = fungsi() {
jika (persyaratan. status == 200) {
myCallback(req. responseText);
} kalau tidak {
myCallback("Kesalahan. " + permintaan. status);
}
}
persyaratan. mengirim();
}

getFile(myDisplayer);

Cobalah sendiri "

Contoh menggunakan Janji

biarkan Janjiku = Janji baru(fungsi(Resolusiku, Tolakku) {
biarkan req = new XMLHttpRequest();
persyaratan. buka('DAPATKAN', "mobilku. htm");
persyaratan. memuat = fungsi() {
jika (persyaratan. status == 200) {
myResolve(req. tanggapan);
} kalau tidak {
myReject("File tidak ditemukan");
}
};
persyaratan. mengirim();
});

janjiku. kemudian(
fungsi(nilai) {MyDisplayer(nilai);},
function(kesalahan) {myDisplayer(kesalahan);}
);

Cobalah sendiri "


Dukungan Peramban

ECMAScript 2015, juga dikenal sebagai ES6, memperkenalkan objek Janji JavaScript

Tabel berikut menentukan versi browser pertama dengan dukungan penuh untuk objek Promise

Chrome 33Edge 12Firefox 29Safari 7. 1Opera 20Feb, 2014Jul, 2015Apr, 2014Sep, 2014Mar, 2014

// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
3 adalah blok bangunan penting untuk operasi asinkron dalam JavaScript. Anda mungkin berpikir bahwa janji tidak begitu mudah dipahami, dipelajari, dan dikerjakan. Dan percayalah, Anda tidak sendirian

Janji menantang bagi banyak pengembang web, bahkan setelah menghabiskan bertahun-tahun bekerja dengan mereka

Pada artikel ini, saya ingin mencoba mengubah persepsi tersebut sambil membagikan apa yang telah saya pelajari tentang Janji JavaScript selama beberapa tahun terakhir. Semoga bermanfaat

Apa itu Janji dalam JavaScript?

// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
_3 adalah objek JavaScript khusus. Ini menghasilkan nilai setelah operasi
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
5 (alias, asinkron) berhasil diselesaikan, atau kesalahan jika tidak berhasil diselesaikan karena waktu habis, kesalahan jaringan, dan sebagainya

Penyelesaian panggilan yang berhasil ditunjukkan oleh panggilan fungsi

// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
6, dan kesalahan ditunjukkan oleh panggilan fungsi
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
7

Anda dapat membuat janji menggunakan konstruktor janji seperti ini

let promise = new Promise(function(resolve, reject) {    
    // Make an asynchronous call and either resolve or reject
});

Dalam kebanyakan kasus, janji dapat digunakan untuk operasi asinkron. Namun, secara teknis, Anda dapat menyelesaikan/menolak operasi sinkron dan asinkron

Tunggu, bukankah kita memiliki
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
8 fungsi untuk operasi asinkron?

Oh ya. Itu benar. Kami memiliki

// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
_8 fungsi dalam JavaScript. Tapi, panggilan balik bukanlah hal yang istimewa dalam JavaScript. Ini adalah fungsi reguler yang menghasilkan hasil setelah panggilan
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
5 selesai (dengan sukses/kesalahan)

Kata 'asinkron' berarti sesuatu terjadi di masa depan, bukan saat ini. Biasanya, panggilan balik hanya digunakan saat melakukan hal-hal seperti panggilan jaringan, atau mengunggah/mengunduh sesuatu, berbicara dengan database, dan sebagainya.

Meskipun

let promise = new Promise(function(resolve, reject) {
    resolve("I am done");
});
_1 sangat membantu, ada kerugian besar bagi mereka juga. Kadang-kadang, kita mungkin memiliki satu callback di dalam callback lain yang ada di callback lain dan seterusnya. aku serius. Mari kita pahami "callback hell" ini dengan sebuah contoh

Cara Menghindari Callback Hell – Contoh PizzaHub

Ayo pesan pizza Veg Margherita 🍕 dari PizzaHub. Saat kami melakukan pemesanan, PizzaHub secara otomatis mendeteksi lokasi kami, menemukan restoran pizza terdekat, dan menemukan apakah pizza yang kami minta tersedia

Jika tersedia, ia mendeteksi jenis minuman apa yang kita dapatkan secara gratis beserta pizzanya, dan terakhir, memesannya

Jika pesanan berhasil dilakukan, kami menerima pesan dengan konfirmasi

Jadi bagaimana kita membuat kode ini menggunakan fungsi callback?

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');

Mari kita lihat lebih dekat fungsi

let promise = new Promise(function(resolve, reject) {
    resolve("I am done");
});
2 pada kode di atas

Itu memanggil API untuk mendapatkan id toko pizza terdekat Anda. Setelah itu, ia mendapatkan daftar pizza yang tersedia di restoran itu. Ini memeriksa apakah pizza yang kami minta ditemukan dan membuat panggilan API lain untuk menemukan minuman untuk pizza itu. Akhirnya order API menempatkan pesanan

Di sini kami menggunakan panggilan balik untuk setiap panggilan API. Ini mengarahkan kita untuk menggunakan callback lain di dalam yang sebelumnya, dan seterusnya

Ini berarti kita masuk ke dalam sesuatu yang kita sebut (sangat ekspresif)

let promise = new Promise(function(resolve, reject) {
    resolve("I am done");
});
3. Dan siapa yang menginginkan itu?

Cara cek status janji javascript
Demonstrasi panggilan balik neraka dan piramida

Ada beberapa cara untuk keluar dari (atau tidak masuk ke)

let promise = new Promise(function(resolve, reject) {
    resolve("I am done");
});
4. Yang paling umum adalah dengan menggunakan fungsi
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
3 atau
let promise = new Promise(function(resolve, reject) {
    resolve("I am done");
});
6. Namun, untuk memahami fungsi
let promise = new Promise(function(resolve, reject) {
    resolve("I am done");
});
6 dengan baik, Anda harus memiliki pemahaman yang adil tentang
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
3s terlebih dahulu

Jadi mari kita mulai dan menyelami janji

Memahami Janji Serikat

Sekadar review, sebuah promise bisa dibuat dengan sintaks konstruktor, seperti ini

let promise = new Promise(function(resolve, reject) {
  // Code to execute
});

Fungsi konstruktor mengambil fungsi sebagai argumen. Fungsi ini disebut

let promise = new Promise(function(resolve, reject) {
    resolve("I am done");
});
_9

// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}

Fungsi pelaksana mengambil dua argumen,

// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
6 dan
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
7. Ini adalah panggilan balik yang disediakan oleh bahasa JavaScript. Logika Anda masuk ke dalam fungsi pelaksana yang berjalan secara otomatis saat
let promise = new Promise(function(resolve, reject) {
    reject(new Error('Something is not right!'));
});
2 dibuat

Agar janji efektif, fungsi pelaksana harus memanggil salah satu fungsi panggilan balik,

// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
6 atau
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
7. Kami akan mempelajari lebih lanjut tentang ini secara rinci dalam beberapa saat

Konstruktor

let promise = new Promise(function(resolve, reject) {
    reject(new Error('Something is not right!'));
});
5 mengembalikan objek
let promise = new Promise(function(resolve, reject) {
    reject(new Error('Something is not right!'));
});
6. Karena fungsi eksekutor perlu menangani operasi async, objek janji yang dikembalikan harus mampu menginformasikan saat eksekusi telah dimulai, diselesaikan (diselesaikan), atau disetel ulang dengan kesalahan (ditolak)

Objek

let promise = new Promise(function(resolve, reject) {
    reject(new Error('Something is not right!'));
});
_6 memiliki properti internal berikut

  1. let promise = new Promise(function(resolve, reject) {
        reject(new Error('Something is not right!'));
    });
    _8 – Properti ini dapat memiliki nilai berikut
  • let promise = new Promise(function(resolve, reject) {
        reject(new Error('Something is not right!'));
    });
    _9. Awalnya ketika fungsi pelaksana memulai eksekusi
  • let promise = new Promise(function(resolve, reject) {
      resolve("I am surely going to get resolved!");
    
      reject(new Error('Will this be ignored?')); // ignored
      resolve("Ignored?"); // ignored
    });
    0. Ketika janji itu diselesaikan
  • let promise = new Promise(function(resolve, reject) {
      resolve("I am surely going to get resolved!");
    
      reject(new Error('Will this be ignored?')); // ignored
      resolve("Ignored?"); // ignored
    });
    1. Ketika janji itu ditolak
Cara cek status janji javascript
Janji menyatakan

2.

let promise = new Promise(function(resolve, reject) {
  resolve("I am surely going to get resolved!");

  reject(new Error('Will this be ignored?')); // ignored
  resolve("Ignored?"); // ignored
});
2 – Properti ini dapat memiliki nilai berikut

  • let promise = new Promise(function(resolve, reject) {
      resolve("I am surely going to get resolved!");
    
      reject(new Error('Will this be ignored?')); // ignored
      resolve("Ignored?"); // ignored
    });
    3. Awalnya ketika nilai
    let promise = new Promise(function(resolve, reject) {
        reject(new Error('Something is not right!'));
    });
    _8 adalah
    let promise = new Promise(function(resolve, reject) {
        reject(new Error('Something is not right!'));
    });
    9
  • let promise = new Promise(function(resolve, reject) {
      resolve("I am surely going to get resolved!");
    
      reject(new Error('Will this be ignored?')); // ignored
      resolve("Ignored?"); // ignored
    });
    6. Ketika
    let promise = new Promise(function(resolve, reject) {
      resolve("I am surely going to get resolved!");
    
      reject(new Error('Will this be ignored?')); // ignored
      resolve("Ignored?"); // ignored
    });
    _7 dipanggil
  • let promise = new Promise(function(resolve, reject) {
      resolve("I am surely going to get resolved!");
    
      reject(new Error('Will this be ignored?')); // ignored
      resolve("Ignored?"); // ignored
    });
    8. Ketika
    let promise = new Promise(function(resolve, reject) {
      resolve("I am surely going to get resolved!");
    
      reject(new Error('Will this be ignored?')); // ignored
      resolve("Ignored?"); // ignored
    });
    _9 dipanggil

Properti internal ini tidak dapat diakses oleh kode tetapi dapat diperiksa. Ini berarti bahwa kami akan dapat memeriksa nilai properti

let promise = new Promise(function(resolve, reject) {
    reject(new Error('Something is not right!'));
});
8 dan
let promise = new Promise(function(resolve, reject) {
  resolve("I am surely going to get resolved!");

  reject(new Error('Will this be ignored?')); // ignored
  resolve("Ignored?"); // ignored
});
2 menggunakan alat debugger, tetapi kami tidak akan dapat mengaksesnya secara langsung menggunakan program

Cara cek status janji javascript
Mampu memeriksa properti internal dari sebuah janji

Status janji bisa

let promise = new Promise(function(resolve, reject) {
    reject(new Error('Something is not right!'));
});
_9,
let promise = new Promise(function(resolve, reject) {
  resolve("I am surely going to get resolved!");

  reject(new Error('Will this be ignored?')); // ignored
  resolve("Ignored?"); // ignored
});
0 atau
let promise = new Promise(function(resolve, reject) {
  resolve("I am surely going to get resolved!");

  reject(new Error('Will this be ignored?')); // ignored
  resolve("Ignored?"); // ignored
});
1. Janji yang diselesaikan atau ditolak disebut
promise.then(
  (result) => { 
     console.log(result);
  },
  (error) => { 
     console.log(error);
  }
);
5

Cara cek status janji javascript
Janji yang diselesaikan dapat dipenuhi atau ditolak

Bagaimana janji diselesaikan dan ditolak

Berikut adalah contoh janji yang akan diselesaikan (status

let promise = new Promise(function(resolve, reject) {
  resolve("I am surely going to get resolved!");

  reject(new Error('Will this be ignored?')); // ignored
  resolve("Ignored?"); // ignored
});
0) dengan nilai
promise.then(
  (result) => { 
     console.log(result);
  },
  (error) => { 
     console.log(error);
  }
);
7 segera

let promise = new Promise(function(resolve, reject) {
    resolve("I am done");
});
_

Janji di bawah ini akan ditolak (status

let promise = new Promise(function(resolve, reject) {
  resolve("I am surely going to get resolved!");

  reject(new Error('Will this be ignored?')); // ignored
  resolve("Ignored?"); // ignored
});
_1) dengan pesan kesalahan
promise.then(
  (result) => { 
     console.log(result);
  },
  (error) => { 
     console.log(error);
  }
);
9

let promise = new Promise(function(resolve, reject) {
    reject(new Error('Something is not right!'));
});

Poin penting untuk diperhatikan

Pelaksana Janji harus memanggil hanya satu
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
6 atau satu
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
7. Setelah satu status diubah (tertunda => terpenuhi atau tertunda => ditolak), itu saja. Panggilan lebih lanjut ke
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
_6 atau
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
7 akan diabaikan
let promise = new Promise(function(resolve, reject) {
  resolve("I am surely going to get resolved!");

  reject(new Error('Will this be ignored?')); // ignored
  resolve("Ignored?"); // ignored
});

Dalam contoh di atas, hanya yang pertama diselesaikan yang akan dipanggil dan sisanya akan diabaikan

Cara menangani Janji setelah Anda membuatnya

A

// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
_3 menggunakan fungsi pelaksana untuk menyelesaikan tugas (kebanyakan asinkron). Fungsi konsumen (yang menggunakan hasil dari janji) harus diberi tahu saat fungsi pelaksana selesai dengan penyelesaian (sukses) atau penolakan (kesalahan)

Metode penangan,

promise.then(
  (result) => { 
      console.log(result);
  }
);
5,
promise.then(
  (result) => { 
      console.log(result);
  }
);
6 dan
promise.then(
  (result) => { 
      console.log(result);
  }
);
7, membantu membuat tautan antara pelaksana dan fungsi konsumen sehingga mereka dapat disinkronkan saat janji
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
6s atau
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
7s

Cara cek status janji javascript
Fungsi pelaksana dan konsumen

Cara Menggunakan promise.then( (result) => { console.log(result); } );_5 Promise Handler

Metode

promise.then(
  (result) => { 
      console.log(result);
  }
);
_5 harus dipanggil pada objek janji untuk menangani hasil (menyelesaikan) atau kesalahan (menolak)

Ini menerima dua fungsi sebagai parameter. Biasanya, metode

promise.then(
  (result) => { 
      console.log(result);
  }
);
_5 harus dipanggil dari fungsi konsumen di mana Anda ingin mengetahui hasil dari eksekusi janji

promise.then(
  (result) => { 
     console.log(result);
  },
  (error) => { 
     console.log(error);
  }
);

Jika Anda hanya tertarik pada hasil yang sukses, Anda bisa memberikan satu argumen saja, seperti ini

promise.then(
  (result) => { 
      console.log(result);
  }
);

Jika Anda hanya tertarik pada hasil kesalahan, Anda dapat memberikan

promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
3 untuk argumen pertama, seperti ini

promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);

Namun, Anda dapat menangani kesalahan dengan cara yang lebih baik menggunakan metode

promise.then(
  (result) => { 
      console.log(result);
  }
);
6 yang akan kita lihat sebentar lagi

Mari kita lihat beberapa contoh penanganan hasil dan kesalahan menggunakan penangan

promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
5 dan
promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
6. Kami akan membuat pembelajaran ini sedikit lebih menyenangkan dengan beberapa permintaan asinkron nyata. Kami akan menggunakan PokeAPI untuk mendapatkan informasi tentang Pokémon dan menyelesaikan/menolaknya menggunakan Janji

Pertama, mari kita buat fungsi generik yang menerima URL PokeAPI sebagai argumen dan mengembalikan Promise. Jika panggilan API berhasil, janji yang diselesaikan dikembalikan. Janji yang ditolak dikembalikan untuk segala jenis kesalahan

Kami akan menggunakan fungsi ini dalam beberapa contoh mulai sekarang untuk mendapatkan janji dan mengerjakannya

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
0Metode utilitas untuk mendapatkan Promise

Contoh 1. Dapatkan informasi 50 Pokemon

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_1

Contoh 2. Mari kita coba URL yang tidak valid

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_2

Cara Menggunakan promise.then( (result) => { console.log(result); } );_6 Promise Handler

Anda dapat menggunakan metode penangan ini untuk menangani kesalahan (penolakan) dari janji. Sintaks meneruskan

promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
_3 sebagai argumen pertama ke
promise.then(
  (result) => { 
      console.log(result);
  }
);
5 bukanlah cara yang bagus untuk menangani kesalahan. Jadi kami memiliki
promise.then(
  (result) => { 
      console.log(result);
  }
);
_6 untuk melakukan pekerjaan yang sama dengan beberapa sintaks yang rapi

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_3

Jika kita melontarkan Error seperti

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_01  alih-alih memanggil
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
7 dari pelaksana dan penangan janji, itu akan tetap diperlakukan sebagai penolakan. Artinya ini akan ditangkap oleh metode penangan ________69______6

Ini sama untuk semua pengecualian sinkron yang terjadi dalam fungsi pelaksana dan penangan janji

Berikut adalah contoh di mana itu akan diperlakukan seperti penolakan dan metode penangan

promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
6 akan dipanggil

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_4

Cara Menggunakan promise.then( (result) => { console.log(result); } );_7 Promise Handler

Handler

promise.then(
  (result) => { 
      console.log(result);
  }
);
_7 melakukan pembersihan seperti menghentikan loader, menutup koneksi langsung, dan seterusnya. Metode
function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_07 akan dipanggil terlepas dari apakah janji
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
6s atau
// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
7s. Itu melewati hasil atau kesalahan ke penangan berikutnya yang dapat memanggil a. lalu() atau. tangkap() lagi

Berikut adalah contoh yang akan membantu Anda memahami ketiga metode secara bersamaan

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_5

Untuk menjelaskan sedikit lebih jauh

  • Metode
    promise.then(
      (result) => { 
          console.log(result);
      }
    );
    _7 membuat memuat
    function orderPizza(type, name) {
        
        // Query the pizzahub for a store
        query(`/api/pizzahub/`, function(result, error){
           if (!error) {
               let shopId = result.shopId;
               
               // Get the store and query pizzas
               query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
                   if (!error) {
                       let pizzas = result.pizzas;
                       
                       // Find if my pizza is availavle
                       let myPizza = pizzas.find((pizza) => {
                           return (pizza.type===type && pizza.name===name);
                       });
                       
                       // Check for the free beverages
                       query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                           if (!error) {
                               let beverage = result.id;
                               
                               // Prepare an order
                               query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                                  if (!error) {
                                      console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                                  } else {
                                      console.log(`Bad luck, No Pizza for you today!`);
                                  }
                               });
    
                           }
                       })
                   }
               });
           } 
        });
    }
    
    // Call the orderPizza method
    orderPizza('veg', 'margherita');
    11
  • Jika janji diselesaikan, metode
    promise.then(
      (result) => { 
          console.log(result);
      }
    );
    5 akan dipanggil. Jika janji ditolak dengan kesalahan, metode
    promise.then(
      (result) => { 
          console.log(result);
      }
    );
    6 akan dipanggil.
    promise.then(
      (result) => { 
          console.log(result);
      }
    );
    _7 akan dipanggil terlepas dari penyelesaian atau penolakan
Apa itu Rantai Janji?

Panggilan

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_15 selalu mengembalikan janji. Janji ini akan memiliki
let promise = new Promise(function(resolve, reject) {
    reject(new Error('Something is not right!'));
});
_8 sebagai
let promise = new Promise(function(resolve, reject) {
    reject(new Error('Something is not right!'));
});
9 dan
let promise = new Promise(function(resolve, reject) {
  resolve("I am surely going to get resolved!");

  reject(new Error('Will this be ignored?')); // ignored
  resolve("Ignored?"); // ignored
});
2 sebagai
let promise = new Promise(function(resolve, reject) {
  resolve("I am surely going to get resolved!");

  reject(new Error('Will this be ignored?')); // ignored
  resolve("Ignored?"); // ignored
});
3. Ini memungkinkan kita untuk memanggil metode
promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
_5 berikutnya pada janji baru

Ketika metode

promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
_5 pertama mengembalikan nilai, metode
promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
5 berikutnya dapat menerimanya. Yang kedua sekarang dapat diteruskan ke yang ketiga
promise.then(
  (result) => { 
      console.log(result);
  }
);
5 dan seterusnya. Ini membentuk rangkaian metode
promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
_5 untuk menyampaikan janji. Fenomena ini disebut
function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_25

Cara cek status janji javascript
Rantai Janji

Ini sebuah contoh

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_6

Di sini pertama-tama kita mendapatkan janji yang diselesaikan dan kemudian mengekstrak URL untuk mencapai Pokemon pertama. Kami kemudian mengembalikan nilai itu dan itu akan diteruskan sebagai janji ke yang berikutnya. kemudian() fungsi penangan. Oleh karena itu keluaran,

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_7

Metode

promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
_5 juga dapat mengembalikan

  • Sebuah nilai (kami telah melihat ini)
  • Sebuah janji baru

Itu juga bisa melempar kesalahan

Berikut adalah contoh di mana kami telah membuat rantai janji dengan metode

promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
5 yang mengembalikan hasil dan janji baru

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_8

Pada panggilan

promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
_5 pertama, kami mengekstrak URL dan mengembalikannya sebagai nilai. URL ini akan diteruskan ke panggilan
promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
5 kedua tempat kami mengembalikan janji baru menggunakan URL itu sebagai argumen

Janji ini akan diselesaikan dan diteruskan ke rantai tempat kami mendapatkan informasi tentang Pokemon. Inilah hasilnya

Cara cek status janji javascript
Output dari panggilan berantai janji

Jika ada kesalahan atau penolakan janji, the. metode catch dalam rantai akan dipanggil

Poin yang perlu diperhatikan. Memanggil

promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
5 berkali-kali tidak membentuk rangkaian Promise. Anda mungkin akhirnya melakukan hal seperti ini hanya untuk memasukkan bug ke dalam kode

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_9

Kami memanggil metode

promise.then(
  null,
  (error) => { 
      console.log(error)
  }
);
_5 tiga kali dengan janji yang sama, tetapi kami tidak melewatkan janji tersebut. Ini berbeda dari rantai janji. Dalam contoh di atas, hasilnya akan berupa kesalahan

Cara cek status janji javascript
Cara Menangani Banyak Janji

Terlepas dari metode penangan (. kemudian,. menangkap, dan. terakhir), ada enam metode statis yang tersedia di Promise API. Empat metode pertama menerima serangkaian janji dan menjalankannya secara paralel

  1. Janji. semua
  2. Janji. setiap
  3. Janji. allSettled
  4. Janji. balapan
  5. Janji. menyelesaikan
  6. Janji. menolak

Mari kita bahas satu per satu

Janji. semua() metode

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_32 menerima kumpulan (misalnya, array) dari promise sebagai argumen dan mengeksekusinya secara paralel

Metode ini menunggu semua janji untuk diselesaikan dan mengembalikan rangkaian hasil janji. Jika salah satu janji ditolak atau dieksekusi gagal karena kesalahan, semua hasil janji lainnya akan diabaikan

Mari buat tiga janji untuk mendapatkan informasi tentang tiga Pokémon

let promise = new Promise(function(resolve, reject) {
  // Code to execute
});
_0

Gunakan Janji. all() metode dengan melewatkan array janji

let promise = new Promise(function(resolve, reject) {
  // Code to execute
});
_1

Keluaran

Cara cek status janji javascript

Seperti yang Anda lihat di keluaran, hasil dari semua janji dikembalikan. Waktu untuk mengeksekusi semua janji sama dengan waktu maksimal yang dibutuhkan janji untuk dijalankan

Janji. apapun() metode

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_33 - Mirip dengan metode
function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
34,
function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
35 juga menerima serangkaian janji untuk mengeksekusinya secara paralel. Metode ini tidak menunggu semua janji diselesaikan. Itu dilakukan ketika salah satu dari janji-janji itu diselesaikan

let promise = new Promise(function(resolve, reject) {
  // Code to execute
});
_2

Outputnya akan menjadi hasil dari salah satu janji yang diselesaikan

Cara cek status janji javascript

Janji. metode allSettled()

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_36 - Metode ini menunggu semua janji untuk diselesaikan (diselesaikan/ditolak) dan mengembalikan hasilnya sebagai array objek. Hasilnya akan berisi status (terpenuhi/ditolak) dan nilai, jika terpenuhi. Dalam kasus status ditolak, itu akan mengembalikan alasan kesalahan

Berikut adalah contoh dari semua janji yang terpenuhi

let promise = new Promise(function(resolve, reject) {
  // Code to execute
});
_3

Keluaran

Cara cek status janji javascript

Jika salah satu dari janji itu menolak, katakanlah, janji_1,

let promise = new Promise(function(resolve, reject) {
  // Code to execute
});
_4
Cara cek status janji javascript

Janji. ras() metode

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_37 – Menunggu janji pertama (tercepat) untuk diselesaikan, dan mengembalikan hasil/kesalahan yang sesuai

let promise = new Promise(function(resolve, reject) {
  // Code to execute
});
_5

Keluarkan janji tercepat yang diselesaikan

Cara cek status janji javascript

Janji. menyelesaikan / menolak metode

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_38 – Menyelesaikan janji dengan nilai yang diberikan padanya. Itu sama dengan yang berikut ini

let promise = new Promise(function(resolve, reject) {
  // Code to execute
});
_6

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_39 – Menolak janji dengan kesalahan diteruskan ke sana. Itu sama dengan yang berikut ini

let promise = new Promise(function(resolve, reject) {
  // Code to execute
});
7Bisakah kita menulis ulang contoh PizzaHub dengan Janji?

Tentu, mari kita lakukan. Mari kita asumsikan bahwa metode

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
_40 akan mengembalikan sebuah promise. Berikut adalah contoh metode query(). Dalam kehidupan nyata, metode ini dapat berbicara dengan database dan mengembalikan hasil. Dalam hal ini, kodenya sangat keras tetapi melayani tujuan yang sama

let promise = new Promise(function(resolve, reject) {
  // Code to execute
});
_8

Berikutnya adalah refactoring

let promise = new Promise(function(resolve, reject) {
    resolve("I am done");
});
_4 kami. Untuk melakukannya, pertama, kita akan membuat beberapa fungsi logika

let promise = new Promise(function(resolve, reject) {
  // Code to execute
});
_9

Gunakan fungsi ini untuk membuat janji yang diperlukan. Di sinilah Anda harus membandingkan dengan

let promise = new Promise(function(resolve, reject) {
    resolve("I am done");
});
_4 contoh. Ini sangat bagus dan elegan

// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
0

Terakhir, panggil metode orderPizza() dengan meneruskan jenis dan nama pizza, seperti ini

// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
1Apa selanjutnya dari sini?

Jika Anda di sini dan telah membaca sebagian besar baris di atas, selamat. Anda sekarang harus memiliki pemahaman yang lebih baik tentang Janji JavaScript. Semua contoh yang digunakan dalam artikel ini ada di repositori GitHub ini

Selanjutnya, Anda harus mempelajari tentang fungsi

let promise = new Promise(function(resolve, reject) {
    resolve("I am done");
});
_6 dalam JavaScript yang menyederhanakan lebih jauh. Konsep janji JavaScript paling baik dipelajari dengan menulis contoh kecil dan membangun di atasnya

Terlepas dari framework atau library (Angular, React, Vue, dan sebagainya) yang kami gunakan, operasi async tidak dapat dihindari. Ini berarti bahwa kita harus memahami janji untuk membuat semuanya berjalan lebih baik

Juga, saya yakin Anda akan menemukan penggunaan metode

function orderPizza(type, name) {
    
    // Query the pizzahub for a store
    query(`/api/pizzahub/`, function(result, error){
       if (!error) {
           let shopId = result.shopId;
           
           // Get the store and query pizzas
           query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
               if (!error) {
                   let pizzas = result.pizzas;
                   
                   // Find if my pizza is availavle
                   let myPizza = pizzas.find((pizza) => {
                       return (pizza.type===type && pizza.name===name);
                   });
                   
                   // Check for the free beverages
                   query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                       if (!error) {
                           let beverage = result.id;
                           
                           // Prepare an order
                           query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                              if (!error) {
                                  console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                              } else {
                                  console.log(`Bad luck, No Pizza for you today!`);
                              }
                           });

                       }
                   })
               }
           });
       } 
    });
}

// Call the orderPizza method
orderPizza('veg', 'margherita');
44 jauh lebih mudah sekarang

// Executor function passed to the 
// Promise constructor as an argument
function(resolve, reject) {
    // Your logic goes here...
}
_2
  • Metode
    function orderPizza(type, name) {
        
        // Query the pizzahub for a store
        query(`/api/pizzahub/`, function(result, error){
           if (!error) {
               let shopId = result.shopId;
               
               // Get the store and query pizzas
               query(`/api/pizzahub/pizza/${shopid}`, function(result, error){
                   if (!error) {
                       let pizzas = result.pizzas;
                       
                       // Find if my pizza is availavle
                       let myPizza = pizzas.find((pizza) => {
                           return (pizza.type===type && pizza.name===name);
                       });
                       
                       // Check for the free beverages
                       query(`/api/pizzahub/beverages/${myPizza.id}`, function(result, error){
                           if (!error) {
                               let beverage = result.id;
                               
                               // Prepare an order
                               query(`/api/order`, {'type': type, 'name': name, 'beverage': beverage}, function(result, error){
                                  if (!error) {
                                      console.log(`Your order of ${type} ${name} with ${beverage} has been placed`);
                                  } else {
                                      console.log(`Bad luck, No Pizza for you today!`);
                                  }
                               });
    
                           }
                       })
                   }
               });
           } 
        });
    }
    
    // Call the orderPizza method
    orderPizza('veg', 'margherita');
    _44 mengembalikan janji. Jadi kita bisa memanggil metode penangan
    promise.then(
      null,
      (error) => { 
          console.log(error)
      }
    );
    _5 di atasnya
  • Selebihnya adalah tentang rantai janji yang kita pelajari di artikel ini
Sebelum kita berakhir

Terima kasih telah membaca sejauh ini. Mari terhubung. Anda dapat @ saya di Twitter (@tapasadhikary) dengan komentar

Anda mungkin juga menyukai artikel lainnya ini

  • JavaScript tidak terdefinisi dan nol. Mari kita bicarakan untuk terakhir kalinya
  • JavaScript. Perbandingan kesetaraan dengan ==, === dan Objek. adalah
  • Kata Kunci `ini` JavaScript + 5 Aturan Pengikatan Kunci Dijelaskan untuk Pemula JS
  • JavaScript TypeOf – Cara Memeriksa Jenis Variabel atau Objek di JS

Itu saja untuk saat ini. Sampai jumpa lagi dengan artikel saya berikutnya segera. Sampai saat itu, tolong jaga dirimu baik-baik

IKLAN

IKLAN

IKLAN

IKLAN

IKLAN

IKLAN

IKLAN

IKLAN

IKLAN

IKLAN

IKLAN

IKLAN

IKLAN

IKLAN

IKLAN

IKLAN

IKLAN


Cara cek status janji javascript
TAPAS ADHIKARY

Penulis. YouTuber. Pencipta. Mentor


Jika Anda membaca sejauh ini, tweet ke penulis untuk menunjukkan bahwa Anda peduli. Tweet terima kasih

Belajar kode secara gratis. Kurikulum open source freeCodeCamp telah membantu lebih dari 40.000 orang mendapatkan pekerjaan sebagai pengembang. Memulai

Bagaimana cara memeriksa apakah Janji diselesaikan JavaScript?

resolve() method di JS mengembalikan objek Promise yang diselesaikan dengan nilai yang diberikan.

Bagaimana cara memeriksa Janji dalam JavaScript?

Untuk memeriksa apakah suatu nilai menjanjikan, periksa apakah jenis nilai adalah objek dan memiliki properti bernama fungsi tipe . g. typeof p === 'objek' && typeof p. lalu === 'fungsi'. Jika kedua kondisi mengembalikan true , nilainya adalah janji.

Bagaimana saya tahu jika Janji saya diselesaikan?

Tempat terbaik untuk mengetahui apakah sebuah janji diselesaikan adalah di. kemudian() . Menguji apakah Promise dipenuhi akan membuat loop polling yang kemungkinan besar salah arah. async/menunggu adalah konstruksi yang bagus jika Anda ingin membuat kode async secara sinkron.

Bagaimana Anda memeriksa apakah semua Janji telah diselesaikan?

Janji . all() method dapat digunakan untuk memeriksa apakah semua Janji telah berhasil dipenuhi. Itu menerima objek yang dapat diubah (mis. g. array) dari beberapa Janji dan mengembalikan Janji. Janji yang dikembalikan diselesaikan jika semua Janji input yang diteruskan ke sana diselesaikan.