أعد الكتابة باستخدام متزامن / انتظار
أعد كتابة رمز المثال هذا من الفصل <info: prom-chaining> باستخدام async / await
بدلاً من.then / catch
:
function loadJson(url) {
return fetch(url)
.then(response => {
if (response.status == 200) {
return response.json();
} else {
throw new Error(response.status);
}
});
}
loadJson('no-such-user.json')
.catch(alert); // Error: 404
الملاحظات أسفل الكود:
async function loadJson(url) { // (1)
let response = await fetch(url); // (2)
if (response.status == 200) {
let json = await response.json(); // (3)
return json;
}
throw new Error(response.status);
}
loadJson('no-such-user.json')
.catch(alert); // Error: 404 (4)
الملاحظات:
-
تصبح الدالة `loadJson`` غير متزامنة ". 2- يتم استبدال جميع “.then” بالداخل بـ “ينتظر”.
-
يمكننا `` response response.json () `بدلاً من انتظارها ، كما يلي:
شبيبة if (response.status == 200) { رد العودة. json () ؛ // (3) }} ``
ثم يجب أن ينتظر الكود الخارجي `` ينتظر ‘’ حتى يتم حل هذا الوعد. في حالتنا لا يهم.
-
تتم معالجة الخطأ الذي تم طرحه من “loadJson” بواسطة “.catch”. لا يمكننا استخدام `` انتظار انتظار Json (…)
، لأننا لسنا في وظيفة
غير متزامن '.