You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/11-async/03-promise-chaining/article.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -232,11 +232,11 @@ new Promise(resolve => resolve(1))
232
232
let promise =fetch(url);
233
233
```
234
234
235
-
این یک درخواست شبکهای به url میفرستد و یک promise را برمیگرداند. زمانی که سرور همراه با headerها پاسخ میدهد، promise همراه با یک شیء response تسویه میشود اما *قبل از اینکه تمام پاسخ دانلود شود*.
235
+
این یک درخواست شبکهای به `url` میفرستد و یک promise را برمیگرداند. زمانی که سرور همراه با headerها پاسخ میدهد، promise همراه با یک شیء `response` تسویه میشود اما *قبل از اینکه تمام پاسخ دانلود شود*.
236
236
237
-
برای خواندن پاسخ کامل، ما باید متد response.text() را فراخوانی کنیم: این متد یک promise برمیگرداند که بعد از دانلود شدن کامل متن از سرور ریموت، همراه با متن به عنوان نتیجه resolve میشود.
237
+
برای خواندن پاسخ کامل، ما باید متد `response.text()` را فراخوانی کنیم: این متد یک promise برمیگرداند که بعد از دانلود شدن کامل متن از سرور ریموت، همراه با متن به عنوان نتیجه resolve میشود.
238
238
239
-
کد پایین یک درخواست به user.json میفرستد و متن آن را از سرور بارگیری میکند:
239
+
کد پایین یک درخواست به `user.json` میفرستد و متن آن را از سرور بارگیری میکند:
شیء response که از fetch برگردانده شده است متد response.json() هم دارد که داده ریموت را میخواند و آن را به صورت جیسان میکند. در این مورد ما، این حتی مناسبتر است پس بیایید به آن سوییچ کنیم.
255
+
شیء `response` که از `fetch` برگردانده شده است متد `response.json()` هم دارد که داده ریموت را میخواند و آن را به صورت جیسان میکند. در این مورد ما، این حتی مناسبتر است پس بیایید به آن سوییچ کنیم.
256
256
257
257
ما از تابعهای کمانی هم برای سادهبودن استفاده خواهیم کرد:
این کد کار میکند؛ برای دانستن جزئیات کامنتها را بخوانید. اگرچه، یک مشکل احتمالی درون آن وجود دارد، یک ارور معمول برای کسانی که شروع به استفاده از promiseها کردهاند.
291
291
292
-
به خط (*) نگاه کنید: چگونه میتوانیم *بعد* از اینکه نمایش آواتار تمام شد و حذف شد کاری را انجام دهیم؟ برای مثال، ما میخواهیم فرمی را برای ویرایش آن کاربر نشان دهیم یا چیز دیگری. تا اینجای کار، راهی وجود ندارد.
292
+
به خط `(*)` نگاه کنید: چگونه میتوانیم *بعد* از اینکه نمایش آواتار تمام شد و حذف شد کاری را انجام دهیم؟ برای مثال، ما میخواهیم فرمی را برای ویرایش آن کاربر نشان دهیم یا چیز دیگری. تا اینجای کار، راهی وجود ندارد.
293
293
294
294
برای اینکه زنجیره را قابل گسترش کنیم، نیاز داریم که یک promise برگردانیم تا هنگامی که نمایش آواتار تمام شد resolve شود.
یعنی اینکه مدیریتکننده .then در خط (*) حالا یک new Promise برمیگرداند که فقط بعد از فراخوانی resolve(githubUser) در setTimeout خط (**) تسویه میشود. .then بعدی در زنجیره برای آن صبر خواهد کرد.
322
+
یعنی اینکه مدیریتکننده `.then` در خط `(*)` حالا یک `new Promise` برمیگرداند که فقط بعد از فراخوانی `resolve(githubUser)` در `setTimeout` خط `(**)` تسویه میشود. `.then` بعدی در زنجیره برای آن صبر خواهد کرد.
323
323
324
324
به عنوان یک عادت خوب، یک عمل ناهنگام باید همیشه یک promise برگرداند. این باعث میشود که بتوان بعد از آن عملیاتی را برنامهریزی کرد؛ حتی اگر نخواهیم زنجیره را الان گسترش دهیم، ممکن است بعدا به آن نیاز داشته باشیم.
0 commit comments