рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ: рд╡рд╛рдпрджрд╛
рд╕рд╛рдордЧреНрд░реА
рдХреНрдпрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ:
- рдбрд╛рд░реНрдЯ рдореЗрдВ рдХреЛрдб рдПрдХ рдПрдХрд▓ рдереНрд░реЗрдб ( рдиреЛрдЯ рдереНрд░реЗрдб - рдереНрд░реЗрдб ) рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред
- рдХреЛрдб рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдереНрд░реЗрдб (рдмреНрд▓реЙрдХ) рд▓реЗрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдлреНрд░реАрдЬ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
Future
( futures
) рд╡рд╕реНрддреБрдПрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИрдВ - рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдпрд╛ I / O, рдЬреЛ рдмрд╛рдж рдореЗрдВ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред- рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди (рдпрд╛
then()
рдЬрдм Future
рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ then()
рдореЗрдВ await
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред - рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ
catchError()
try-catch
рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди (рдпрд╛ catchError()
рдЙрдкрдпреЛрдЧ try-catch
catchError()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред - рдПрдХ рд╕рд╛рде рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ (рдпрд╛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХрд░реНрддрд╛) рдмрдирд╛рдПрдВред
рдбрд╛рд░реНрдЯ рдореЗрдВ рдХреЛрдб рдПрдХ рдПрдХрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдереНрд░реЗрдб рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдб рд▓рдВрдмреА рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╕реНрдд рд╣реИ рдпрд╛ I / O рдСрдкрд░реЗрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬрдмрдХрд┐ рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдбрд╛рд░реНрдЯ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП futures
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдлреНрдпреВрдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдПрд╕рд┐рдВрдХреНрд╕ рдФрд░ рд╡реЗрдЯ рдпрд╛ рдлреНрдпреВрдЪрд░ рдПрдкреАрдЖрдИ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдиреЛрдЯ
рд╕рднреА рдХреЛрдб рдХреЛ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдореЗрдореЛрд░реА рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИред рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдПрдХ рд╣реА рдЖрдЗрд╕реЛрд▓реЗрдЯ рдореЗрдВ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреЛрдб рдмреНрд▓реЙрдХ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдореЗрдВ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред (рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХреЗ рдмрдЬрд╛рдп рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред) рдЖрдорддреМрд░ рдкрд░, рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рд╕реНрдореГрддрд┐ рдХреЛ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡реЗ рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рд╡рд┐рд╖рдп рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрд▓рдЧрд╛рд╡ рдпрд╛ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬ рджреЗрдЦреЗрдВред
рдкрд░рд┐рдЪрдп
рдЖрдЗрдП рдХреЛрдб рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ "рдлреНрд░реАрдЬ" рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рджрд┐рди рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рдорд╛рдЪрд╛рд░ рдкрдврд╝рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рд╡рд╣ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рд░реВрдЪрд┐ рд╣реИ:
<gathered news goes here> Winning lotto numbers: [23, 63, 87, 26, 2] Tomorrow's forecast: 70F, sunny. Baseball score: Red Sox 10, Yankees 0
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ gatherNewsReports()
рдмрд╛рдж рд╕рднреА рдСрдкрд░реЗрд╢рди gatherNewsReports()
рд╣реЛ gatherNewsReports()
рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╕рдм gatherNewsReports()
рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рд╣реЛрдЧреАред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЯрд░реА, рдореМрд╕рдо рдХреЗ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдФрд░ рд╣рд╛рд▓ рдХреЗ рдЧреЗрдо рдХреЗ рд╡рд┐рдЬреЗрддрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдбрд╛рд░реНрдЯ рд▓реЗрдЦрдХ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдорд╣рдВрдЧреЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ futures
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреЗ рдореВрд▓реНрдп рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ
рднрд╡рд┐рд╖реНрдп рдХреНрдпрд╛ рд╣реИ?
future
рдореЗрдВ Future <T> рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬреЛ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рд╣реИ рдЬреЛ рдЯрд╛рдЗрдк T рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ future
рдкреНрд░рдХрд╛рд░ Future<void>
рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ future
рд╣реИред future
рд▓реМрдЯрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рджреЛ рдЪреАрдЬреЗрдВ рд╣реЛрддреА рд╣реИрдВ:
- рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рдореЗрдВ рд╣реИ рдФрд░ рдПрдХ рдЕрдкреВрд░реНрдг
Future
рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрддрд╛ рд╣реИред - рдмрд╛рдж рдореЗрдВ, рдЬрдм рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ
future
рдПрдХ рдореВрд▓реНрдп рдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
future
рдирд┐рд░реНрднрд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
async
- async
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВFuture
рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
Async - рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
async
рдФрд░ await
рдЦреЛрдЬрд╢рдмреНрдж Dart рдХреЗ async
рд╕рдорд░реНрдерди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рд╡реЗ рдЖрдкрдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ Future
рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕рдХреЗ рд╢рд░реАрд░ рдХреЗ рд╕рд╛рдордиреЗ async
рдХреАрд╡рд░реНрдб рд╣реИред await
рдХреАрд╡рд░реНрдб рдХреЗрд╡рд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдиреЛрдЯ: рдбрд╛рд░реНрдЯ 1.x рдореЗрдВ, рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рддреБрд░рдВрдд рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рджреЗрд░реА рдХрд░рддреЗ рд╣реИрдВред рдбрд╛рд░реНрдЯ 2 рдореЗрдВ, рддреБрд░рдВрдд рд░реБрдХрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдкрд╣рд▓реЗ await
рдпрд╛ return
рддрдХ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ return
ред
рдирд┐рдореНрди рдХреЛрдб async
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рдорд╛рдЪрд╛рд░ рдкрдврд╝рдиреЗ рдХрд╛ рдЕрдиреБрдХрд░рдг await
- await
ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдбрд╛рд░реНрдЯрдкреИрдб рдЦреЛрд▓реЗрдВ, рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП CONSOLE рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ printDailyNewsDigest()
, рд▓реЗрдХрд┐рди рд╕рдорд╛рдЪрд╛рд░ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реЛред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, printDailyNewsDigest()
рдПрдХ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ gatherNewsReports()
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП gatherNewsReports()
, рдЬреЛ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд╣реИред gatherNewsReports()
рд▓рд┐рдП gatherNewsReports()
рд╡рд┐рдзрд┐ рдХрд╛рдо рдХреЛ gatherNewsReports()
, рд▓реЗрдХрд┐рди рдмрд╛рдХреА рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддреА рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рдмреЗрд╕рдмреЙрд▓ рдЦреЗрд▓ рдХреА рд▓реЙрдЯрд░реА рд╕рдВрдЦреНрдпрд╛, рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдФрд░ рд╕реНрдХреЛрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ; рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрдХрдЯреНрдард╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕рдорд╛рдЪрд╛рд░ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ gatherNewsReports()
ред рдпрджрд┐ gatherNewsReports()
рдХреЛ рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рднреА рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ: рджреИрдирд┐рдХ рд╕рдорд╛рдЪрд╛рд░ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдХреЗ рдкреНрд░рд┐рдВрдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИред
рд╡рд╛рдкрд╕реА рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред gatherNewsReports()
рдХрд╛ gatherNewsReports()
рдкреНрд░рдХрд╛рд░ gatherNewsReports()
рдлрд╝рдВрдХреНрд╢рди Future<String>
, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ future
рджреЗрддрд╛ рд╣реИред printDailyNewsDigest()
рдлрд╝рдВрдХреНрд╢рди, рдЬреЛ рдорд╛рди рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдХрд╛ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ Future<void>
ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд░реЗрдЦ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдЪрд░рдгреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
main()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ printDailyNewsDigest()
рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди printDailyNewsDigest()
, рдЬреЛ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЪрд▓рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИредprintDailyNewsDigest()
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП await
рдХрд╛ рдЙрдкрдпреЛрдЧ await
gatherNewsReports()
рд╕рдорд╛рд░реЛрд╣, рдЬреЛ рдЪрд▓рдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИредgatherNewsReports()
рдПрдХ рдЕрдзреВрд░рд╛ future
( future
рдПрдХ рдЙрджрд╛рд╣рд░рдг Future<String>
) рджреЗрддрд╛ рд╣реИред- рдЪреВрдВрдХрд┐
printDailyNewsDigest()
рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдФрд░ рдПрдХ рдореВрд▓реНрдп рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЕрдкреВрд░реНрдг рдореБрдЦреНрдп future
(рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, Future<void>
) рдХреЛ рдХреЙрд▓рд┐рдВрдЧ main ()
рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред - рдмрд╛рдХреА рдЖрдЙрдЯрдкреБрдЯ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╡реЗ рд╕рдордХрд╛рд▓рд┐рдХ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдЕрдЧрд▓реЗ рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рд▓реЙрдЯрд░реА рд╕рдВрдЦреНрдпрд╛рдПрдВ рдореМрд╕рдо рдХреЗ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдВрдЧреАред
main()
рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж main()
рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдо future
рдХреЗ рд╕рдорд╛рдЪрд╛рд░ рдХреЗ рд╕рд╛рде gatherNewsReports()
рд╣реИрдВ рдЬрдм рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрдорд╛ рд╣реЛ рдЬрд╛рддреЗ future
ред рддрдм printDailyNewsDigest()
рд╕рдорд╛рдЪрд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИредprintDailyNewsDigest()
рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдЕрдВрдд рдореЗрдВ, рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд future
рдФрд░ рдЖрд╡реЗрджрди рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рддреБрд░рдВрдд (рд╕рд┐рдВрдХреНрд░реЛрдирд╕) рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЕрдзреВрд░рд╛ future
рдЬрдм рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреА рдкрд╣рд▓реА рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ:
- рдкрд╣рд▓реЗ
await
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рдж рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдЕрдзреВрд░рд╛ future
рдорд┐рд▓рддрд╛ рд╣реИ)ред - рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЛрдИ
return
ред - рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдХрд╛ рдЕрдВрддред
рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк future
рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ "рдкрдХрдбрд╝" рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ, рдЖрдк рдЯреНрд░рд╛рдЗ try-catch
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ:
Future<void> printDailyNewsDigest() async { try { var newsDigest = await gatherNewsReports(); print(newsDigest); } catch (e) {
рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ try-catch
рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╡реИрд╕рд╛ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ try
рдмреНрд▓реЙрдХ рдореЗрдВ рдХреЛрдб рдПрдХ рдЕрдкрд╡рд╛рдж try
рд╣реИ, рддреЛ catch
рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдЕрдиреБрдХреНрд░рдорд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди
рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрд╛рдзрд┐рдХ await
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрдерди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ:
expensiveB()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рддрдм рддрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ expensiveA()
рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рднрд╡рд┐рд╖реНрдп рдПрдкреАрдЖрдИ
рдбрд╛рд░реНрдЯ 1.9 рдореЗрдВ async
рдФрд░ await
рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ Future
API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ред рдЖрдк рдЕрднреА рднреА Future
API рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдореЗрдВ рдЬрд┐рд╕реЗ asyncтАУawait
рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ asyncтАУawait
рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдиреА рд╣реЛрдЧреАред
Future
API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрд▓рдмреИрдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП then()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред future
рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдХреЙрд▓рдмреИрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдирд┐рдореНрди рдХреЛрдб Future
рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рдорд╛рдЪрд╛рд░ рдкрдврд╝рдиреЗ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдбрд╛рд░реНрдЯрдкреИрдб рдЦреЛрд▓реЗрдВ, рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП CONSOLE рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ printDailyNewsDigest()
, рд▓реЗрдХрд┐рди рд╕рдорд╛рдЪрд╛рд░ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реЛред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред
рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЪрд▓рддрд╛ рд╣реИ:
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
- рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди
printDailyNewsDigest()
рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рддреБрд░рдВрдд рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ gatherNewsReports()
ред gatherNewsReports()
рд╕рдорд╛рдЪрд╛рд░ рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ future
рджреЗрддрд╛ future
редprintDailyNewsDigest()
then()
рдХреЙрд▓рдмреИрдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП printDailyNewsDigest()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ future
рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдорд╛рди рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдЧрд╛ред then()
рдХреЙрд▓ рдПрдХ рдирдпрд╛ future
рджреЗрддрд╛ рд╣реИ, рдЬреЛ then()
рд╕реЗ рдХреЙрд▓рдмреИрдХ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред- рдмрд╛рдХреА рдЖрдЙрдЯрдкреБрдЯ рдХрд╛рд░реНрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╡реЗ рд╕рдордХрд╛рд▓рд┐рдХ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдЕрдЧрд▓реЗ рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рд▓реЙрдЯрд░реА рд╕рдВрдЦреНрдпрд╛рдПрдВ рдореМрд╕рдо рдХреЗ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдВрдЧреАред
- рдЬрдм рд╕рднреА рд╕рдорд╛рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рдЧрдП рд╣реИрдВ, рддреЛ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдЪрд╛рд░ рд╡рд╛рд▓реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде
future
рдиреЗ рд╡рд╛рдкрд╕ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рд╣реИред then()
printDailyNewsDigest()
рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЛрдб рд╕рдорд╛рдЪрд╛рд░ рдХреЛ printDailyNewsDigest()
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред- рдЖрд╡реЗрджрди рдмрдВрдж рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдиреЛрдЯ: printDailyNewsDigest()
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдХреЛрдб future.then(print)
рдирд┐рдореНрди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ: future.then((newsDigest) => print(newsDigest))
ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдВрджрд░ рдХреЛрдб then()
рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Future<void> printDailyNewsDigest() { final future = gatherNewsReports(); return future.then((newsDigest) { print(newsDigest);
рдЖрдкрдХреЛ рдХреЙрд▓рдмреИрдХ рддрд░реНрдХ рдХреЛ then()
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ then()
, рднрд▓реЗ рд╣реА future
рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛ Future<void>
ред рд╕рдореНрдореЗрд▓рди рджреНрд╡рд╛рд░рд╛, рдПрдХ рдЕрдкреНрд░рдпреБрдХреНрдд рддрд░реНрдХ рдХреЛ _
(рдЕрдВрдбрд░рд╕реНрдХреЛрд░) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
final future = printDailyNewsDigest(); return future.then((_) {
рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐
Future
API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк catchError()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
Future<void> printDailyNewsDigest() => gatherNewsReports().then(print).catchError(handleError);
рдпрджрд┐ рд╕рдорд╛рдЪрд╛рд░ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
gatherNewsReports()
рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╡рд┐рдлрд▓редthen()
рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ future
then()
рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, print()
рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИредcatchError()
( handleError()
) рдореЗрдВ catchError()
рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ, catchError()
рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ future
рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рддреНрд░реБрдЯрд┐ рдЖрдЧреЗ рдкреНрд░рдЪрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред
Future
API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп then()
рд╢реНрд░реГрдВрдЦрд▓рд╛ - catchError()
рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рд╣реИред рдЗрд╕ рдЬреЛрдбрд╝реА рдХреЛ Future
рдПрдкреАрдЖрдИ рдореЗрдВ рдПрдХ try-catch
рдХреЗ рдмрд░рд╛рдмрд░ рдорд╛рдиреЗрдВред
рддрдм рдХреА рддрд░рд╣ (), catchError () рдПрдХ рдирдпрд╛ future
рджреЗрддрд╛ рд╣реИ рдЬреЛ рдХреЙрд▓рдмреИрдХ рдХреЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рд╖рдп рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╛рдпрджрд╛ рдФрд░ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдкрдврд╝реЗрдВред
future
рд▓реМрдЯрдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛
рдЖрдЗрдП рддреАрди рдХрд╛рд░реНрдпреЛрдВ expensiveA()
рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: expensiveA()
, expensiveB()
, expensiveC()
, рдЬреЛ future
рд╡рд╛рдкрд╕ рдХрд░рддреЗ future
ред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ (рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ), рдпрд╛ рдЖрдк рдЙрди рд╕рднреА рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬреИрд╕реЗ рд╣реА рд╕рднреА рдорд╛рди рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ, рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреЛрдиреЛрдВ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛ рд╣реИред
then()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛
рдЬрдм future
рд▓реМрдЯрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреНрд░рдо рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, then()
рд╕реЗ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ then()
:
expensiveA() .then((aValue) => expensiveB()) .then((bValue) => expensiveC()) .then((cValue) => doSomethingWith(cValue));
рдХреЙрд▓рдмреИрдХ рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкрдврд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред ( рдиреЛрдЯ http://callbackhell.com/ )
Future.wait()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ futures
рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ
рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХреНрд░рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк Future.wait()
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдЖрдк Future.wait () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА futures
рд╕реВрдЪреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рддреБрд░рдВрдд future
рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрд╣ future
рддрдм рддрдХ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╕рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ futures
ред рдпрд╣ future
рд╕рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ futures
рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдЧрд╛ред
Future.wait([expensiveA(), expensiveB(), expensiveC()]) .then((List responses) => chooseBestResponse(responses, moreInfo)) .catchError(handleError);
рдпрджрд┐ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХреЙрд▓ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ Future.wait()
рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ future
рднреА рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП catchError()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдФрд░ рдХреНрдпрд╛ рдкрдврд╝рдирд╛ рд╣реИ?
рдбрд╛рд░реНрдЯ 2. рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ: рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо