рд╢реАрд░реНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ
рдирд╣реАрдВ, рдбреАрд╡реАрдП рд░реЗрдбрдХреНрд╕-рд╕рд╛рдЧрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд░реЗрдбрдХреНрд╕-рд╕рд╛рдЧрд╛ рдкреНрд░рднрд╛рд╡ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЖрдк рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЙрддреНрддрд░ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ
https://github.com/redux-saga/redux-saga/issues/987#issuecomment -301039792
рдореИрдВрдиреЗ рдЕрднреА рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдореЗрд░реЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореБрджреНрджрд╛ рдкрдврд╝рд╛ рд╣реИред рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, redux-saga рдХреЗ рд▓реЗрдЦрдХ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИрдВред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╢реНрди рднреА рдерд╛ред рдореИрдВрдиреЗ рдбреАрд╡реАрдП рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХреАред рдкреНрд░рднрд╛рд╡ рд╡рд╕реНрддреБ рдореЗрдВ хЗ╜цХ░
рдмрд╛рд╣рд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдмрд╛рд╣рд░реА рдХреЛ Generator
рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ next()
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдХреЛрдб рдЕрднреА рднреА рдмрд╣реБрдд рддрд╛рдЬрд╝рд╛ рд╣реИред
рдореИрдВрдиреЗ рдЕрднреА рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдореЗрд░реЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореБрджреНрджрд╛ рдкрдврд╝рд╛ рд╣реИред рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, redux-saga рдХреЗ рд▓реЗрдЦрдХ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИрдВред
рдЕрдЬреАрдм, async, рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд┐рдпрдВрддреНрд░рдг рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрдирд░реЗрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ
рдирд╣реАрдВ, рдбреАрд╡реАрдП рд░реЗрдбрдХреНрд╕-рд╕рд╛рдЧрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд░реЗрдбрдХреНрд╕-рд╕рд╛рдЧрд╛ рдкреНрд░рднрд╛рд╡ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЖрдк рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЙрддреНрддрд░ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ
рдпрд╣ рдореБрджреНрджрд╛ рдпрд╣ рдирд╣реАрдВ рдХрд╣рддрд╛ рдХрд┐ рдЬрдирд░реЗрдЯрд░ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рдХреНрдпреЛрдВ рд╣реИред @xiaosongxiaosong
Async рдХреЗ рд╕рд╛рде, рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? (рдкреНрд░рд╢реНрди рдХрд╛рдлреА рд╕рдордп рд╣реЛ рдЧрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХреА рд╣реИ)
@951565664
async, рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд┐рдпрдВрддреНрд░рдг рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрдирд░реЗрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ
BengBu-YueZhang рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред рдЬрдирд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд╕рдордЭ рдмрд╣реБрдд рдЧрд╣рди рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдЕрдкрдиреА рдЙрдерд▓реА рд╕рдордЭ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рджреЗрдВ:
рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ 6 рдЧреЗрдЯрд┐рдВрдЧ рд╕реНрдЯрд╛рд░реНрдЯреЗрдб рдЬреЗрдирд░реЗрдЯрд░ рдЪреИрдкреНрдЯрд░ рдореЗрдВ рджреЛ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд╣реИрдВ, рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред
рдЙрдкрдЬ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реНрд╡рдпрдВ рдПрдХ рдореВрд▓реНрдп рдирд╣реАрдВ рд▓реМрдЯрд╛рддреА рд╣реИ, рдпрд╛ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрддреА рд╣реИред рдЕрдЧрд▓реА рд╡рд┐рдзрд┐ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд┐рдЫрд▓реА рдЙрдкрдЬ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдард╣рд░рд╛рд╡ рд░рд╛рдЬреНрдп рд╕реЗ рдЬрдирд░реЗрдЯрд░ рд╕рдорд╛рд░реЛрд╣ рдЪрд▓ рд░рд╣рд╛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреА рд╕рдВрджрд░реНрдн рд╕реНрдерд┐рддрд┐ (рд╕рдВрджрд░реНрдн) рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИред рдЕрдЧрд▓реА рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЬрдирд░реЗрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдирд░реЗрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдгреЛрдВ рдореЗрдВ рдмрд╛рд╣рд░ рд╕реЗ рдЕрдВрджрд░ рддрдХ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдиреЛрдВ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдХрд┐ Generator
рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ, рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ goto
рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ, рдЖрдк рдЬрд╣рд╛рдВ рдЪрд╛рд╣реЗрдВ рдХреВрдж рд╕рдХрддреЗ рд╣реИрдВ
рдореИрдВрдиреЗ рдЕрднреА рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдореЗрд░реЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореБрджреНрджрд╛ рдкрдврд╝рд╛ рд╣реИред рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, redux-saga рдХреЗ рд▓реЗрдЦрдХ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИрдВред
рдЕрдЬреАрдм, async, рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд┐рдпрдВрддреНрд░рдг рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрдирд░реЗрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ JS рднрд╛рд╖рд╛ C рднрд╛рд╖рд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдХрд┐
Generator
рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ, рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐goto
рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ, рдЖрдк рдЬрд╣рд╛рдВ рдЪрд╛рд╣реЗрдВ рдХреВрдж рд╕рдХрддреЗ рд╣реИрдВ