{"id":550,"date":"2016-04-22T11:49:52","date_gmt":"2016-04-22T08:49:52","guid":{"rendered":"http:\/\/langtoday.com\/?p=550"},"modified":"2016-07-27T15:55:47","modified_gmt":"2016-07-27T12:55:47","slug":"deferred-%d0%b8-promise-%d0%b2-jquery-%d0%b8%d0%bb%d0%b8-%d0%ba%d0%b0%d0%ba-%d0%b8%d0%b7%d0%b1%d0%b0%d0%b2%d0%b8%d1%82%d1%8c%d1%81%d1%8f-%d0%be%d1%82-%d0%b2%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%bd%d1%8b","status":"publish","type":"post","link":"https:\/\/langtoday.com\/?p=550","title":{"rendered":"Deferred \u0438 promise \u0432 jQuery, \u0438\u043b\u0438 \u043a\u0430\u043a \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u043e\u0432."},"content":{"rendered":"<h1>\u0427\u0442\u043e \u043f\u043b\u043e\u0445\u043e\u0433\u043e \u0432 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430\u0445 (callback)<\/h1>\n<p>\u0412 \u043a\u043e\u043b\u0431\u044d\u043a\u0430\u0445, \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043b\u043e\u0445\u043e\u0433\u043e \u043d\u0435\u0442. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c, \u043e\u0434\u043d\u0430\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0434\u0438\u043d \u043a\u043e\u043b\u0431\u044d\u043a \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0435 AJAX-\u0437\u0430\u043f\u0440\u043e\u0441, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u043e\u0442\u0432\u0435\u0442, \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043b\u0431\u044d\u043a-\u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439. \u041e\u0442\u043b\u0438\u0447\u043d\u043e. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0442\u0440\u0438, \u0447\u0435\u0442\u044b\u0440\u0435, \u0434\u0435\u0441\u044f\u0442\u044c \u0442\u0430\u043a\u0438\u0445 \u043f\u0430\u0440 \u0437\u0430\u043f\u0440\u043e\u0441-\u043a\u043e\u043b\u0431\u044d\u043a? \u0427\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0442\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u0430 \u043a\u043e\u043b\u0431\u044d\u043a-\u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432\u044b\u0437\u0432\u0430\u0442\u044c, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u0442\u0440\u0438 \u0432\u0435\u0440\u043d\u0443\u0442 \u0447\u0442\u043e-\u0442\u043e \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430? \u0412\u0441\u0451 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0449\u0435\u043c\u0443 \u043a\u043e\u0434\u0443:<!--more--><\/p>\n<pre class=\"lang:js decode:true\">fs.readdir(source, function (err, files) {\r\n  if (err) {\r\n    console.log('Error finding files: ' + err)\r\n  } else {\r\n    files.forEach(function (filename, fileIndex) {\r\n      console.log(filename)\r\n      gm(source + filename).size(function (err, values) {\r\n        if (err) {\r\n          console.log('Error identifying file size: ' + err)\r\n        } else {\r\n          console.log(filename + ' : ' + values)\r\n          aspect = (values.width \/ values.height)\r\n          widths.forEach(function (width, widthIndex) {\r\n            height = Math.round(width \/ aspect)\r\n            console.log('resizing ' + filename + 'to ' + height + 'x' + height)\r\n            this.resize(width, height).write(dest + 'w' + width + '_' + filename, function(err) {\r\n              if (err) console.log('Error writing file: ' + err)\r\n            })\r\n          }.bind(this))\r\n        }\r\n      })\r\n    })\r\n  }\r\n})<\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0437\u044f\u0442 \u0441 \u0441\u0430\u0439\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a \u0438 \u043e\u0437\u0430\u0433\u043b\u0430\u0432\u043b\u0435\u043d &#8212; \u0430\u0434 \u043a\u043e\u043b\u0431\u044d\u043a\u043e\u0432 (<a href=\"http:\/\/callbackhell.com\/\" target=\"_blank\">callbackhell.com<\/a>). \u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u043e\u0437\u0432\u0443\u0447\u0435\u043d\u043d\u044b\u0435 (\u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0438 \u043c\u0435\u043d\u0435\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435) \u0437\u0430\u0434\u0430\u0447\u0438, \u0431\u044b\u043b\u0430 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u0430 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0439 (promises).<\/p>\n<h1>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 deferred \u0438 promise<\/h1>\n<p>\u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438, \u0431\u0443\u0434\u0442\u043e \u043e\u043d\u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0435. \u041e\u0431\u0435\u0449\u0430\u043d\u0438\u044f (promises) &#8212; \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0449\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0441 \u043d\u0438\u043c\u0438 \u00a0\u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u044b, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435. \u041e\u0431\u044b\u0447\u043d\u044b\u0439\u00a0JavaScript \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u044d\u0442\u0443 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438\u00a0ECMAScript 2015. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043a\u043e\u043d\u0441\u043e\u0440\u0446\u0438\u0443\u043c\u0430 <a href=\"https:\/\/developer.mozilla.org\/en\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Promise\" target=\"_blank\">Mozilla MDN<\/a>. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043f\u043e\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e, \u043b\u0443\u0447\u0448\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u044d\u0442\u043e\u0439 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u042f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0441\u044c \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0430 <a href=\"https:\/\/jquery.com\/\" target=\"_blank\">jQuery<\/a>, \u043a\u0430\u043a \u0441\u0430\u043c\u043e\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439.<\/p>\n<p>\u041b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0430\u00a0<a href=\"http:\/\/blog.mediumequalsmessage.com\/promise-deferred-objects-in-javascript-pt1-theory-and-semantics\" target=\"_blank\">\u0443 \u041a\u0440\u0438\u0441\u0430 \u0423\u044d\u0431\u0431\u0430<\/a>\u00a0, \u044f \u0432\u043e\u0437\u044c\u043c\u0443 \u0441 \u0435\u0433\u043e \u0431\u043b\u043e\u0433\u0430 <a href=\"http:\/\/blog.mediumequalsmessage.com\/promise-deferred-objects-in-javascript-pt2-practical-use\" target=\"_blank\">\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432<\/a>. \u0412\u00a0jQuery \u0432\u0432\u0435\u0434\u0435\u043d\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f Deferred-\u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u042d\u0442\u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0435\u0449\u0435 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e (\u0441 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c). \u041a\u0430\u0436\u0434\u044b\u0439 deferred-\u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u043c\u0435\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0431\u044f promise-\u043e\u0431\u044a\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043a\u0430 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e. \u00a0\u0423 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0439, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0435\u0441\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (resolved, failed) \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0441\u043c\u0435\u043d\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.<\/p>\n<p>\u041a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 Deferred \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0435\u0441\u044f \u0432 \u043d\u0435\u043c \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435:<\/p>\n<pre class=\"tab-convert:true lang:js decode:true\">var deferred = $.Deferred();\r\n\r\ndeferred.done(function(value) {\r\n   alert(value);\r\n});\r\n\r\ndeferred.resolve(\"hello world\");<\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 deferred-\u043e\u0431\u044a\u0435\u043a\u0442, \u0437\u0430\u0442\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434 done \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043e\u0441\u044f \u0432 \u043d\u0435\u043c \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0443\u044e \u0432 \u043e\u043a\u043d\u0435 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 deferred \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u00a0(resolved). \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u00a0deferred \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c\u00a0&#171;hello world&#187;. \u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e, \u044d\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043e \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u043c \u043e\u043a\u043d\u0435.<\/p>\n<h1>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b Promise \u0438 Deferred<\/h1>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0439\u00a0\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f:<\/p>\n<pre class=\"lang:js decode:true\">var request = $.ajax(url);\r\nrequest.done(function () {\r\n  console.log('Request completed');\r\n});<\/pre>\n<p>\u041c\u0435\u0442\u043e\u0434 jQuery ajax \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434 done \u043c\u044b \u0437\u0430\u0434\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u0440\u043e\u0439\u0434\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e (\u043d\u0435 \u0432\u0435\u0440\u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443).<\/p>\n<p>deferred-\u041e\u0431\u044a\u0435\u043a\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u043f\u0443\u0442\u044c \u0432 \u043f\u043e\u0434\u0432\u0435\u0448\u0435\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 (pending). \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 <strong>resolve()<\/strong> \u0438 <strong>reject()<\/strong>. \u0422\u043e\u0433\u0434\u0430 \u043e\u043d \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u0442 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, resolved (\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0439, \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0432\u0448\u0438\u0439) \u0438 rejected (\u043e\u0442\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u0439, \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0432\u0448\u0438\u0439 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439). \u0412 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437.<\/p>\n<p>\u041e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 Promise &#8212; \u044d\u0442\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0439 (immutable) \u043e\u0431\u044a\u0435\u043a\u0442. \u0422\u043e \u0435\u0441\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Deferred, \u043d\u043e \u043d\u0435 \u0432 Promise.<\/p>\n<p>Promise \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<p><strong>state()<\/strong> &#8212; \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430<\/p>\n<p><strong>done()<\/strong> &#8212; \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0441\u043c\u0435\u043d\u044b \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u043d\u0430 resolved<\/p>\n<p><strong>fail()<\/strong> &#8212; \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0441\u043c\u0435\u043d\u044b \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u043d\u0430 rejected<\/p>\n<p><strong>then()<\/strong> &#8212; \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 done \u0438 fail (\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0434\u0432\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430) + \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 (\u043e\u0431 \u044d\u0442\u043e\u043c \u0434\u0430\u043b\u0435\u0435 \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443)<\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<strong>\u00a0$.when()<\/strong> \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u0432\u0430 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u0445\u043e\u0442\u0438\u043c \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u0431\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432\u0435\u0440\u043d\u0443\u0442 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c Deferred &#8212; \u0435\u0441\u043b\u0438 \u043e\u043d \u0431\u044b\u043b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d (resolved) \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0431\u044b\u043b \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d, \u0442\u043e \u044d\u0442\u043e\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e:<\/p>\n<pre class=\"lang:js decode:true \">var deferred = $.Deferred();\r\n\r\ndeferred.resolve(\"hello world\");\r\n\r\ndeferred.done(function(value) {\r\n   alert(value);\r\n});<\/pre>\n<h1>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/h1>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0440\u0443\u0442\u044f\u0442\u0441\u044f \u0432\u043e\u043a\u0440\u0443\u0433 \u0442\u0440\u0435\u0445 \u0432\u0435\u0449\u0435\u0439 (\u0432\u0437\u044f\u0442\u043e \u0438\u0437 <a href=\"http:\/\/blog.mediumequalsmessage.com\/promise-deferred-objects-in-javascript-pt2-practical-use\">Promise &amp; Deferred Objects in JavaScript Pt.2: in Practice<\/a>):<\/p>\n<h3>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043d\u0430 \u043e\u0434\u043d\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435<\/h3>\n<pre class=\"lang:js decode:true \">var request = $.ajax(url);\r\n request.done(function () {\r\n  console.log('\u0417\u0430\u043f\u0440\u043e\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d'); \r\n}); \/\/ \u0412 \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\r\nrequest.done(function (retrievedData) {\r\n $('#contentPlaceholder').html(retrievedData); \r\n});<\/pre>\n<h3>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u0437\u0430\u0434\u0430\u0447 \u0441\u0440\u0430\u0437\u0443<\/h3>\n<pre class=\"lang:js decode:true \">$.when(taskOne, taskTwo).done(function () {\r\n console.log('taskOne \u0438 taskTwo \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b');\r\n});<\/pre>\n<h3>\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447<\/h3>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043e\u0434\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u0442\u043e\u0440\u0430\u044f<\/p>\n<pre class=\"lang:js decode:true \">var step1, step2, url;\r\n\r\nurl = 'http:\/\/fiddle.jshell.net';\r\n\r\n  step1 = $.ajax(url);\r\n\r\n  step2 = step1.then(\r\n    function (data) {\r\n        var def = new $.Deferred();\r\n\r\n        setTimeout(function () {\r\n            console.log('\u0417\u0430\u043f\u0440\u043e\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d');\r\n            def.resolve();\r\n        },2000);\r\n\r\n      return def.promise();\r\n\r\n  },\r\n    function (err) {\r\n        console.log('Step1 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f \u043d\u0435\u0443\u0434\u0430\u0447\u0435\u0439: Ajax \u0437\u0430\u043f\u0440\u043e\u0441');\r\n    }\r\n  );\r\n  step2.done(function () {\r\n      console.log('\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430')\r\n      setTimeout(\"console.log('end')\",1000);\r\n  });<\/pre>\n<p>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432 AJAX-\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445, \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438\u00a0$.when(), \u0440\u0430\u0437\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u0438 \u0442.\u043f.<\/p>\n<h1>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b then()<\/h1>\n<ul>\n<li>.then() \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u043e\u0432\u043e\u0435 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 (Promise)<\/li>\n<li>.then() \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0432\u00a0.then() \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<ul>\n<li>\u043d\u043e\u0432\u043e\u0435 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f (\u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e\/\u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043e)<\/li>\n<li>\u0432\u0432\u043e\u0434 \u0432\u043d\u0443\u0442\u0440\u0438 .then() \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d, \u043d\u043e \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d .then()<\/li>\n<\/ul>\n<p>\u0435\u0441\u043b\u0438 \u0432 .then()\u00a0\u043f\u0435\u0440\u0435\u0434\u0430\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 Promise-\u043e\u0431\u044a\u0435\u043a\u0442:<\/p>\n<ul>\n<li>\u043d\u043e\u0432\u043e\u0435 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0442\u043e \u0436\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435<\/li>\n<li>\u0435\u0441\u043b\u0438 \u0432 .then() \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0442\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430<\/li>\n<\/ul>\n<h1><a href=\"https:\/\/langtoday.com\/?p=200\" target=\"_blank\">\u0410 \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c jQuery<\/a>?<\/h1>\n<p>\u0412 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f \u0443\u0436\u0435 \u0432\u0445\u043e\u0434\u044f\u0442 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 ECMA \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b <a href=\"https:\/\/developer.mozilla.org\/ru\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Promise#Browser_compatibility\" target=\"_blank\">\u043d\u0430\u0442\u0438\u0432\u043d\u043e <\/a>\u043f\u043e\u0447\u0442\u0438 \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\u00a0<a href=\"https:\/\/promisesaplus.com\/\" target=\"_blank\">Promise\/A<\/a>. \u041c\u043d\u043e\u0433\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0435 \u0441\u0445\u043e\u0434\u043d\u0443\u044e \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u0441 \u044d\u0442\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439, \u043e\u0434\u043d\u0430\u043a\u043e, \u044d\u0442\u043e \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439 jQuery, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c <a href=\"https:\/\/thewayofcode.wordpress.com\/tag\/jquery-deferred-broken\/\" target=\"_blank\">\u0432\u0441\u0451 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0435 \u0442\u0430\u043a<\/a>. \u0415\u0441\u043b\u0438 \u0432\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c jQuery, \u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0432\u043c\u0435\u0441\u0442\u043e Deferred-\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 Promise \u0434\u043b\u044f JavaScript, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <a href=\"http:\/\/www.html5rocks.com\/en\/tutorials\/es6\/promises\/\" target=\"_blank\">\u0441\u0442\u0430\u0442\u044c\u0435 \u0414\u0436\u0435\u0439\u043a\u0430 \u0410\u0440\u0447\u0438\u0431\u0430\u043b\u044c\u0434\u0430<\/a>, \u0442\u043e \u0432 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0430\u0442\u044c\u0435 \u0434\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0432\u0435\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 jQuery \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f \u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443 Promise \u0442\u0430\u043a \u0441\u043a\u043e\u0440\u043e, \u043a\u0430\u043a \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a:<\/p>\n<pre class=\"lang:js decode:true\">var jsPromise = Promise.resolve($.ajax('\/whatever.json'));<\/pre>\n<p>$.ajax() \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 Deferred-\u043e\u0431\u044a\u0435\u043a\u0442\u00a0jQuery, \u043d\u043e \u044d\u0442\u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c\u0443\u00a0Promise\u00a0\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.<\/p>\n<h1>\u0415\u0449\u0435 \u043f\u043e \u0442\u0435\u043c\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b (\u0430\u043d\u0433\u043b.)<\/h1>\n<ul>\n<li><a href=\"http:\/\/blog.mediumequalsmessage.com\/promise-deferred-objects-in-javascript-pt2-practical-use\" target=\"_blank\">Promise &amp; Deferred Objects in JavaScript Pt.2: in Practice<\/a><\/li>\n<li><a href=\"http:\/\/joseoncode.com\/2011\/09\/26\/a-walkthrough-jquery-deferred-and-promise\/\">Understanding JQuery.Deferred and Promise<\/a><\/li>\n<li><a href=\"http:\/\/www.danieldemmel.me\/blog\/2013\/03\/22\/an-introduction-to-jquery-deferred-slash-promise\/\">An introduction to jQuery Deferred \/ Promise and the design pattern in general<\/a><\/li>\n<li><a href=\"http:\/\/www.bitstorm.org\/weblog\/2012-1\/Deferred_and_promise_in_jQuery.html\">Deferred and promise in jQuery<\/a><\/li>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/19101670\/provide-a-default-fail-method-for-a-jquery-deferred-object\">Provide a default &#8216;fail&#8217; method for a jQuery deferred object<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/petkaantonov\/bluebird\/wiki\/Promise-anti-patterns\">The Deferred anti-pattern<\/a><\/li>\n<li><a href=\"http:\/\/www.i-programmer.info\/programming\/jquery\/4788-jquery-promises-a-deferred.html\">jQuery, Promises &amp; Deferred<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u0427\u0442\u043e \u043f\u043b\u043e\u0445\u043e\u0433\u043e \u0432 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430\u0445 (callback) \u0412 \u043a\u043e\u043b\u0431\u044d\u043a\u0430\u0445, \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043b\u043e\u0445\u043e\u0433\u043e \u043d\u0435\u0442. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c, \u043e\u0434\u043d\u0430\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0434\u0438\u043d \u043a\u043e\u043b\u0431\u044d\u043a \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0435 AJAX-\u0437\u0430\u043f\u0440\u043e\u0441, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u043e\u0442\u0432\u0435\u0442, \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043b\u0431\u044d\u043a-\u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439. \u041e\u0442\u043b\u0438\u0447\u043d\u043e. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0442\u0440\u0438, \u0447\u0435\u0442\u044b\u0440\u0435, \u0434\u0435\u0441\u044f\u0442\u044c&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[48,82,130,46],"class_list":["post-550","post","type-post","status-publish","format-standard","hentry","category-javascript","tag-javascript","tag-jquery","tag-promise","tag-46"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/langtoday.com\/index.php?rest_route=\/wp\/v2\/posts\/550","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/langtoday.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/langtoday.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/langtoday.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/langtoday.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=550"}],"version-history":[{"count":13,"href":"https:\/\/langtoday.com\/index.php?rest_route=\/wp\/v2\/posts\/550\/revisions"}],"predecessor-version":[{"id":602,"href":"https:\/\/langtoday.com\/index.php?rest_route=\/wp\/v2\/posts\/550\/revisions\/602"}],"wp:attachment":[{"href":"https:\/\/langtoday.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=550"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/langtoday.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=550"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/langtoday.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=550"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}