{"id":193598,"date":"2013-09-27T10:06:03","date_gmt":"2013-09-27T06:06:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=193598"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=193598","title":{"rendered":"<span class=\"post_title\">\u0415\u0449\u0451 \u0440\u0430\u0437 \u043e Deferred\/Promise<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/3df\/09f\/5ef\/3df09f5ef275490e6a594e023d0a7ec8.jpg\" alt=\"Deferred\" align=\"left\"\/>\u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0434\u0435\u043b\u044c \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u043b\u044b\u0448\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u0430 <b>Promise<\/b> \u0438 <b>Deferred<\/b> \u043e\u0442 \u0440\u0430\u0437\u043d\u044b\u0445 \u043b\u044e\u0434\u0435\u0439. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u044d\u0442\u0438\u043c\u0438 \u043f\u043e\u043d\u044f\u0442\u0438\u044f\u043c\u0438 \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u0443\u0436\u0435 \u043f\u043e\u0432\u0438\u0434\u0430\u0432\u0448\u0438\u0435 \u0432\u0438\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0432\u0448\u0438\u0435\u0441\u044f \u0432 \u0441\u0432\u043e\u0435\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438.<\/p>\n<p>  \u041a\u0430\u043a \u044f \u043c\u043e\u0433\u0443 \u0441\u0443\u0434\u0438\u0442\u044c, \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 <i>\u043d\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c<\/i> \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438, \u044d\u0442\u0438 2 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u0440\u0443\u0434\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f. \u0418 \u043d\u0435 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u044f Promise \u0438 Deferred \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u0447\u0435\u043c-\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0445\u043e\u0434\u0443 \u0432\u044b\u0434\u0443\u043c\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u0447\u0442\u043e \u0431\u044b \u0430\u043f\u0440\u043e\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 Deferred objects (\u0432 JQuery \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e).<\/p>\n<p>  \u0414\u0430, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u044d\u0442\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u043e\u043d \u043f\u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u044f\u043a\u043e\u0432\u044b\u043c \u0438 \u043d\u0435 \u0441\u0442\u043e\u044f\u0449\u0438\u043c \u0438 \u0432\u044b\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u044f\u0439\u0446\u0430. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u043e\u043f\u0440\u043e\u0441 \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0441\u044f. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u043d\u0430\u0431\u0435\u0440\u0443\u0441\u044c \u0441\u043c\u0435\u043b\u043e\u0441\u0442\u0438 \u0435\u0449\u0435 \u0440\u0430\u0437 \u0435\u0433\u043e \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044c \u0438 \u0432\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443: <b>1)<\/b> \u041c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c. <b>2)<\/b> \u042f \u043f\u043e\u0439\u0434\u0443 \u043e\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438, \u0430 \u043d\u0435 \u043e\u0442 \u0442\u0435\u043e\u0440\u0438\u0438. \u041c\u043e\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430. \u0422\u0435\u043e\u0440\u0438\u044e \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0432 \u0441\u0441\u044b\u043b\u043a\u0430\u0445 \u043a \u043f\u043e\u0441\u0442\u0443.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u0447\u0442\u043e Promise \u0438 Deferred \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u044b, \u043c\u043d\u0435 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044c \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432 JavaScript. <\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<p>  <b>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Deferred object?<\/b>: \u044d\u0442\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439.<br \/>  <b>\u0417\u0430\u0447\u0435\u043c \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c?<\/b>: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e \u0431\u044b \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u043e\u0431\u0449\u0438\u0439 \u043a\u043e\u043b\u0431\u044d\u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c AJAX \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c.<br \/>  <b>\u0413\u0434\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c?<\/b>: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043a\u0430\u0440\u0442\u0443. \u041d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u043e\u0442\u043c\u0435\u0442\u043a\u0430\u0445 \u043d\u0430 \u043d\u0435\u0439 \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0432\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u043a\u0430\u0440\u0442\u0443 (\u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u043c \u0432\u0438\u0434\u0435) \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043f\u0440\u0435\u043b\u043e\u0430\u0434\u0435\u0440, \u0432 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 20 AJAX \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. \u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u0435\u043b\u043e\u0430\u0434\u0435\u0440, \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0443, \u043c\u0430\u0440\u043a\u0435\u0440\u044b \u0438 \u0431\u043b\u043e\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430. \u0412\u043e\u0442 \u0442\u0430\u043a \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043d\u0430 CoffeeScript (c JavaScript \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c) \u0438 \u043c\u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b, \u043a\u0430\u0441\u0430\u044e\u0449\u0438\u0435\u0441\u044f CoffeeScript.<\/p>\n<p>  1) CoffeeScript \u044d\u0442\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0442\u043e\u0442 \u0436\u0435 JavaScript, \u043d\u043e \u0441 \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0441\u0442\u044b\u043c \u0438 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u044b\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c.<br \/>  2) <b>-&gt;<\/b> \u0432 CoffeeScript \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <b>function(){ }<\/b> \u0432 JavaScript<br \/>  3) <b>(a, b) -&gt;<\/b> \u0432 CoffeeScript \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <b>function(a, b){ }<\/b> \u0432 JavaScript<br \/>  4) <b>do<\/b> \u0432 CoffeeScript \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <b>()<\/b> \u0432 JavaScript. \u0422.\u0435 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438\u043c\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u043e\u0441\u043b\u0435 <b> do <\/b><br \/>  5) <b>do (a, b) -&gt; &quot;Hello World!&quot; <\/b> \u0432 CoffeeScript \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <b>(function(a, b){ return &quot;Hello World!&quot;; })(a, b)<\/b> \u0432 JavaScript<\/p>\n<h5>\u041c\u0435\u0442\u043e\u0434 apply<\/h5>\n<p>  \u042f \u043b\u0435\u043d\u0438\u0432\u044b\u0439 \u0438 \u043d\u0435 \u043b\u044e\u0431\u043b\u044e \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u0441\u0442\u0443\u0447\u0430\u0442\u044c \u043f\u0430\u043b\u044c\u0446\u0430\u043c\u0438 \u043f\u043e \u043a\u043b\u0430\u0432\u0438\u0448\u0430\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 <b>console.log<\/b> \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e <b>log<\/b>. \u042d\u0442\u043e\u0433\u043e \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f JS \u043c\u0435\u0442\u043e\u0434 <b>apply<\/b>.<\/p>\n<p>  <b>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043c\u0435\u0442\u043e\u0434 apply?<\/b> \u042d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 Function (Function.apply). \u0410 \u0437\u043d\u0430\u0447\u0438\u0442, \u043e\u043d \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u043a\u043e \u0432\u0441\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c.<br \/>  <b>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 apply?<\/b> \u041e\u043d \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043d\u0435\u0435. <b>\u041f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442<\/b> \u0437\u0430\u0434\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442.\u0435. \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <b>this<\/b> \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. <b>\u0412\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442<\/b> \u0437\u0430\u0434\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<br \/>  <b>\u0413\u0434\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c?<\/b> \u0427\u0430\u0441\u0442\u043e \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 <b>fn(x1, x2, x3, x4, &#8230;)<\/b>, \u043d\u043e \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044e \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u0443 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0432\u0430\u043c \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 \u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u0430, \u0430 \u043d\u0435 \u043e\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439-\u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <b>apply<\/b>. \u041f\u043e \u0441\u0443\u0442\u0438 apply \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p>  \u0417\u043d\u0430\u044f \u0442\u043e, \u0447\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u0441\u0435\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 JavaScript \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <b>arguments<\/b>, \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0438\u043d\u0442 \u0443\u0448\u0430\u043c\u0438:<\/p>\n<pre><code class=\"coffeescript\">window.log = -&gt; try console.log.apply(console, arguments) <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">JS \u0432\u0435\u0440\u0441\u0438\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">window.log = function() {   try {     return console.log.apply(console, arguments);   } catch (_error) {} }; <\/code><\/pre>\n<\/p><\/div>\n<\/div>\n<p>  <b>\u0427\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e?<\/b> \u042f \u0441\u043e\u0437\u0434\u0430\u043b \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u0442\u043e\u0434 <b>log<\/b>. \u0412\u0441\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043f\u043e\u043b\u0443\u0447\u0430\u044e (arguments) \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 <b>log<\/b> \u044f \u043f\u0435\u0440\u0435\u0434\u0430\u044e \u0432 \u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <b>console.log<\/b> (\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 apply). \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u044b \u043d\u0435 \u043d\u0430\u0440\u0443\u0448\u0438\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u0435\u0442\u043e\u0434\u0430 <b>console.log<\/b>, \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0435\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <i>apply<\/i> \u043e\u0431\u044a\u0435\u043a\u0442 <b>console<\/b>. \u0414\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 <b>console.log<\/b> \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <b>try<\/b>, \u0447\u0442\u043e \u0431\u044b \u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0438\u0442\u044c \u0441\u0435\u0431\u044f.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0415\u0449\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0430\u0445\u0430\u0440\u0430 \u0432 Coffee<\/b><\/p>\n<div class=\"spoiler_text\">\u041f\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 <b>&#8230;<\/b> \u043f\u043e\u0441\u043b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 arguments \u0438 \u0432\u044b \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u0435 \u0441\u0435\u0431\u044f \u043e\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f apply. \u0414\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u0435\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0432\u044b\u0448\u0435.<\/p>\n<pre><code class=\"coffeescript\">window.log = -&gt; try console.log arguments... <\/code><\/pre>\n<\/p><\/div>\n<\/div>\n<p>  \u0415\u0441\u043b\u0438 \u0441 \u044d\u0442\u0438\u043c \u0432\u0441\u0435 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0442\u043e \u0434\u0432\u0438\u0436\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435. \u041a\u0441\u0442\u0430\u0442\u0438, \u044f \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b \u043f\u0440\u043e <b>apply<\/b> \u2014 \u043e\u043d \u043d\u0430\u043c \u0435\u0449\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f.<\/p>\n<h5>\u0428\u0430\u0433 1. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430<\/h5>\n<p>  \u0414\u043b\u044f \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 10 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043c\u0435\u0442\u043e\u0434 <b>setTimeout<\/b>. \u041f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043e\u043d \u043e\u0442\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u00ab\u0436\u0438\u0432\u0435\u0442 \u0441\u0432\u043e\u0435\u0439 \u0436\u0438\u0437\u043d\u044c\u044e\u00bb. \u0412\u043e\u0442 \u043c\u044b \u0438 \u043d\u0430\u0448\u043b\u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u044b Deferred \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. <\/p>\n<p>  \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0446\u0438\u043a\u043b \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c setTimeout 10 \u0440\u0430\u0437 \u0438 \u043f\u0440\u043e\u043b\u043e\u0433\u0433\u0438\u0440\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <b>index<\/b>. <\/p>\n<pre><code class=\"coffeescript\">for index in [0...10]   setTimeout -&gt;     log index   , 1000 <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">JS \u0432\u0435\u0440\u0441\u0438\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">var index, _i;  for (index = _i = 0; _i &lt; 10; index = ++_i) {   setTimeout(function() {     return log(index);   }, 1000); } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0420\u043e\u0432\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0435 \u0447\u0438\u0441\u043b\u0430 <b>\u00ab0 1 2 3 4 5 6 7 8 9\u00bb<\/b>, \u0430 <b>\u00ab10 10 10 10 10 10 10 10 10 10\u00bb<\/b>.<br \/>  \u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u044d\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043a \u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442 \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u043a\u043e\u0434 \u0432\u043d\u0443\u0442\u0440\u0438 <b>setTimeout<\/b>, \u0446\u0438\u043a\u043b \u0443\u0436\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f (\u043e\u043d \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e), \u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a <b>index<\/b> \u043a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u043f\u0440\u0438\u043c\u0435\u0442 \u043a\u0440\u0430\u0439\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d 10.<\/p>\n<h5>\u0428\u0430\u0433 2. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u0432\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u0432\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0435\u0451, \u043f\u0435\u0440\u0435\u0434\u0430\u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430. \u0412\u0443\u0430\u043b\u044f! \u0412 \u043a\u043e\u0444\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u044d\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e.<\/p>\n<pre><code class=\"coffeescript\">for index in [0...10]   do (index) -&gt;     setTimeout -&gt;       log index     , 1000 <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">JS \u0432\u0435\u0440\u0441\u0438\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">var index, _fn, _i;  _fn = function(index) {   return setTimeout(function() {     return log(index);   }, 1000); }; for (index = _i = 0; _i &lt; 10; index = ++_i) {   _fn(index); } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<h5>\u0428\u0430\u0433 3. \u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 deferred?<\/h5>\n<p>  Deferred \u043e\u0431\u044a\u0435\u043a\u0442 \u2014 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0422\u0430\u043a\u0438\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e:<\/p>\n<p>   \u2014 <b>pending<\/b> \u2014 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430<br \/>   \u2014 <b>rejected<\/b> \u2014 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d \u043f\u0430\u0434\u0435\u043d\u0438\u0435\u043c<br \/>   \u2014 <b>resolved<\/b> \u2014 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d \u0443\u0441\u043f\u0435\u0448\u043d\u043e<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u0443 Deferred \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0435\u0441\u0442\u044c \u0440\u044f\u0434 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0435\u0442\u043e\u0434 <b>.resolve()<\/b>.<\/p>\n<p>  \u041f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e Deferred \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0443\u0434\u0438\u0442\u044c, \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d \u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u043c.<\/p>\n<p>  \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Deferred \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b:<\/p>\n<p>  <b>1)<\/b> \u0441\u043e\u0437\u0434\u0430\u0442\u044c Deferred \u043e\u0431\u044a\u0435\u043a\u0442<br \/>  <b>2)<\/b> \u041f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 Deferred \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435<br \/>  <b>3)<\/b> \u041f\u0435\u0440\u0435\u0434\u0430\u0442\u044c Deferred \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u0443\u0434\u0430-\u0442\u043e, \u0433\u0434\u0435 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044d\u0442\u043e \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u043d\u0430 \u043e\u0442\u043a\u0443\u043f \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e. \u041f\u0440\u043e <b> return dfd.promise()<\/b> \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043a\u043e\u0434\u0430.<\/p>\n<pre><code class=\"coffeescript\">for index in [0...10]   promise = do (index) -&gt;     dfd = new $.Deferred()          setTimeout -&gt;       log index       dfd.resolve()     , 1000      return dfd.promise() <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">JS \u0432\u0435\u0440\u0441\u0438\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">var index, promise, _i;  for (index = _i = 0; _i &lt; 10; index = ++_i) {   promise = (function(index) {     var dfd;     dfd = new $.Deferred();      setTimeout(function() {       log(index);       return dfd.resolve();     }, 1000);      return dfd.promise();   })(index); } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412\u044b \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 <b>return dfd.promise()<\/b>. \u0418 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432\u044b \u0437\u0430\u0434\u0430\u0434\u0438\u0442\u0435 \u0440\u0435\u0437\u043e\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u0440\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0435 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0441\u0430\u043c Deferred \u043e\u0431\u044a\u0435\u043a\u0442, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e <b>Promise<\/b>?\u00bb. \u0421\u0443\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 Deferred \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043d\u0430\u0440\u0443\u0436\u0443, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437 \u043d\u0435\u0433\u043e \u0432\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0438\u0433\u0434\u0435, \u043a\u0440\u043e\u043c\u0435 \u0441\u0442\u0440\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0443 Deferred \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u0418\u043d\u0430\u0447\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0443\u0441\u0442\u043e\u044f\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u0431\u043b\u0430\u0437\u043d\u043e\u043c \u0438 \u043d\u0430\u0440\u0443\u0448\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d. <b>Promise<\/b> \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u0440\u0435\u0437\u0430\u043d\u043d\u0443\u044e \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0443 \u043a\u043e\u043f\u0438\u044e Deferred.<\/p>\n<h5>\u0428\u0430\u0433 4. \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u00ab\u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0439\u00bb<\/h5>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f 10 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u2014 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437 \u00ab\u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0439\u00bb (\u0432\u0438\u0434\u0438\u043c\u043e \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0439 \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0451 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u0446\u0438\u043a\u043b\u0430. \u0418 \u0442\u0430\u043a, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0443\u0441\u0442\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438 \u0437\u0430\u043d\u043e\u0441\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0435 \u00ab\u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435\u00bb \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<pre><code class=\"coffeescript\">promises_ary = []  for index in [0...10]   promise = do (index) -&gt;     dfd = new $.Deferred()          setTimeout -&gt;       log index       dfd.resolve()     , 1000      dfd.promise()    promises_ary.push promise   log promises_ary <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">JS \u0432\u0435\u0440\u0441\u0438\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">var index, promise, promises_ary, _i;  promises_ary = [];  for (index = _i = 0; _i &lt; 10; index = ++_i) {   promise = (function(index) {     var dfd;     dfd = new $.Deferred();      setTimeout(function() {       log(index);       return dfd.resolve();     }, 1000);      return dfd.promise();   })(index);    promises_ary.push(promise); }  log(promises_ary); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 <b>log<\/b> \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043d\u0430\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.<\/p>\n<pre><code class=\"javascript\"># =&gt; [obj, obj, ...] <\/code><\/pre>\n<h5>\u0428\u0430\u0433 5. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u00ab\u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0439\u00bb<\/h5>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0432\u0435\u0441\u0438\u0442\u044c \u043a\u043e\u043b\u0431\u044d\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f JQuery \u043c\u0435\u0442\u043e\u0434 <b>$.when<\/b>. \u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 <b>$.when<\/b> \u043e\u043f\u0438\u0441\u0430\u043d \u043a\u0430\u043a \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0439 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e, \u043c\u044b \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0438\u043c\u0435\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 <b>promises_ary<\/b>. \u041a\u0430\u043a \u043d\u0435 \u0442\u0440\u0443\u0434\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u043c\u044b \u0432\u043d\u043e\u0432\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043c\u0435\u0442\u043e\u0434 <b>apply<\/b>.<\/p>\n<pre><code class=\"coffeescript\">promises_ary = []  for index in [0...10]   promise = do (index) -&gt;     dfd = new $.Deferred()          setTimeout -&gt;       log index       dfd.resolve()     , 1000      dfd.promise()    promises_ary.push promise   $.when.apply($, promises_ary).done -&gt;   log 'Promises Ary is Done' <\/code><\/pre>\n<h5>\u0428\u0430\u0433 6. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u0438<\/h5>\n<p>  \u0412 \u043a\u043e\u043d\u0446\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 setTimeout. \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0445\u0435\u043b\u043f\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0438 \u0431\u0443\u0434\u0435\u043c \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u043e\u0434 \u0432\u043d\u0443\u0442\u0440\u0438 setTimeout.<\/p>\n<pre><code class=\"coffeescript\">rand = (min, max) -&gt; Math.floor(Math.random() * (max - min + 1) + min)  promises_ary = []  for index in [0...10]   promise = do (index) -&gt;     dfd = new $.Deferred()          setTimeout -&gt;       log index       dfd.resolve()     , rand(1, 5) * 1000      dfd.promise()    promises_ary.push promise   $.when.apply($, promises_ary).done -&gt;   log 'Promises Ary is Done' <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">JS \u0432\u0435\u0440\u0441\u0438\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">var index, promise, promises_ary, _i;  rand = function(min, max) {   return Math.floor(Math.random() * (max - min + 1) + min); };  promises_ary = [];  for (index = _i = 0; _i &lt; 10; index = ++_i) {   promise = (function(index) {     var dfd;     dfd = new $.Deferred();          setTimeout(function() {       log(index);       return dfd.resolve();     }, rand(1, 5) * 1000);      return dfd.promise();   })(index);    promises_ary.push(promise); }  $.when.apply($, promises_ary).done(function() {   return log('Promises Ary is Done'); }); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 AJAX \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 JQuery \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 1.5 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c Deferred\/Promise, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043d\u0438\u043c\u0438 \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0441\u044c. \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u043c\u0438, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d. \u0414\u0443\u043c\u0430\u044e \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e \u0431\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 Deferred\/Promise \u043f\u043e \u0434\u0440\u0443\u0433\u0438\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c. \u041d\u0430\u0434\u0435\u044e\u0441\u044c \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442.<\/p>\n<ol>\n<li><a href=\"http:\/\/api.jquery.com\/category\/deferred-object\/\">Deferred Object (JQuery official) <\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/113073\/\">jQuery Deferred Object (Habr)<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/112960\/\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Deferred \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 jQuery 1.5 (Habr)<\/a><\/li>\n<li><a href=\"http:\/\/wiki.commonjs.org\/wiki\/Promises\">CommonJS Promises<\/a><\/li>\n<li><a href=\"http:\/\/docs.angularjs.org\/api\/ng.$q\">AngularJS (promise\/deferred)<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/183008\/\">Deferred \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 AngularJS<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/189084\/\">Promise-\u044b \u0432 AngularJS<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/CodeCatalyst\/promise-as3\">Promises for ActionScript 3.0<\/a><\/li>\n<li><a href=\"http:\/\/jquery.page2page.ru\/index.php5\/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82_deferred\">\u041e\u0431\u044a\u0435\u043a\u0442 deferred<\/a><\/li>\n<\/ol>\n<p>  <i>\u0412\u043e\u043f\u0440\u043e\u0441 \u043a \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044e:<\/i> \u041d\u0435 \u0440\u0435\u0434\u043a\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0442\u044c \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435, \u0447\u0442\u043e Deferred \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043a\u0443\u043f\u0435 \u0441 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438, \u043d\u043e \u0438 \u0441 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c\u0438. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u044f \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b \u0437\u0430\u0434\u0430\u0447, \u0433\u0434\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043e \u043d\u0435\u0439 \u0443\u0437\u043d\u0430\u0442\u044c.<\/p>\n<p>  <i>\u0412\u043e\u043f\u0440\u043e\u0441 \u043a \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044e:<\/i> \u0411\u044b\u043b\u043e \u0431\u044b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043e \u0442\u0435\u0445 \u0437\u0430\u0434\u0430\u0447\u0430\u0445, \u0433\u0434\u0435 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 Deferred\/Promises.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/193598\/\"> http:\/\/habrahabr.ru\/post\/193598\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/3df\/09f\/5ef\/3df09f5ef275490e6a594e023d0a7ec8.jpg\" alt=\"Deferred\" align=\"left\"\/>\u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0434\u0435\u043b\u044c \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u043b\u044b\u0448\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u0430 <b>Promise<\/b> \u0438 <b>Deferred<\/b> \u043e\u0442 \u0440\u0430\u0437\u043d\u044b\u0445 \u043b\u044e\u0434\u0435\u0439. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u044d\u0442\u0438\u043c\u0438 \u043f\u043e\u043d\u044f\u0442\u0438\u044f\u043c\u0438 \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u0443\u0436\u0435 \u043f\u043e\u0432\u0438\u0434\u0430\u0432\u0448\u0438\u0435 \u0432\u0438\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0432\u0448\u0438\u0435\u0441\u044f \u0432 \u0441\u0432\u043e\u0435\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438.<\/p>\n<p>  \u041a\u0430\u043a \u044f \u043c\u043e\u0433\u0443 \u0441\u0443\u0434\u0438\u0442\u044c, \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 <i>\u043d\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c<\/i> \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438, \u044d\u0442\u0438 2 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u0440\u0443\u0434\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f. \u0418 \u043d\u0435 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u044f Promise \u0438 Deferred \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u0447\u0435\u043c-\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0445\u043e\u0434\u0443 \u0432\u044b\u0434\u0443\u043c\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u0447\u0442\u043e \u0431\u044b \u0430\u043f\u0440\u043e\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 Deferred objects (\u0432 JQuery \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e).<\/p>\n<p>  \u0414\u0430, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u044d\u0442\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u043e\u043d \u043f\u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u044f\u043a\u043e\u0432\u044b\u043c \u0438 \u043d\u0435 \u0441\u0442\u043e\u044f\u0449\u0438\u043c \u0438 \u0432\u044b\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u044f\u0439\u0446\u0430. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u043e\u043f\u0440\u043e\u0441 \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0441\u044f. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u043d\u0430\u0431\u0435\u0440\u0443\u0441\u044c \u0441\u043c\u0435\u043b\u043e\u0441\u0442\u0438 \u0435\u0449\u0435 \u0440\u0430\u0437 \u0435\u0433\u043e \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044c \u0438 \u0432\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443: <b>1)<\/b> \u041c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c. <b>2)<\/b> \u042f \u043f\u043e\u0439\u0434\u0443 \u043e\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438, \u0430 \u043d\u0435 \u043e\u0442 \u0442\u0435\u043e\u0440\u0438\u0438. \u041c\u043e\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430. \u0422\u0435\u043e\u0440\u0438\u044e \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0432 \u0441\u0441\u044b\u043b\u043a\u0430\u0445 \u043a \u043f\u043e\u0441\u0442\u0443.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u0447\u0442\u043e Promise \u0438 Deferred \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u044b, \u043c\u043d\u0435 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044c \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432 JavaScript. <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-193598","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/193598","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=193598"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/193598\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=193598"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=193598"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=193598"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}