Async: n/рд╕реЗрдХрдВрдб рдХреА рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде mapLimit

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдЕрдХреНрддреВре░ 2016  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: caolan/async

рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдХрд┐рд╕реА рд╕рдВрдЦреНрдпрд╛/рд╕реЗрдХрдВрдб рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?
рдпрд╣ рдЙрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреИрд╕реЗ Google рд╢реАрдЯ API рд╕реАрдорд╛рдПрдВ рдФрд░ рдХреЛрдЯрд╛ (рджреЗрдЦреЗрдВ https://developers.google.com/analytics/devguides/config/mgmt/v3/limits-quotas), рдЬреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддреА рд╣реИрдВ ( рдХреНрдпреВрдкреАрдПрд╕) рдкреНрд░рддрд┐ рдЖрдИрдкреАред
рдзрдиреНрдпрд╡рд╛рдж!

docs feature wont fix

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдУрдкреА: рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╣рд▓ рдХрд░ рд▓рд┐рдпрд╛ рд╣реЛ ..... рдореИрдВрдиреЗ рд▓реАрдХрдмрдХреЗрдЯ рдпрд╛ рдЯреЛрдХрди рдмрдХреЗрдЯ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд░ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред https://www.npmjs.com/package/limiter рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЕрддреАрдд рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рджрд░ рд╕реАрдорд┐рдд рдореИрдкрд░ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд░реЗрдВред рдЖрдкрдХрд╛ рдореИрдкрд░ рдлрд╝рдВрдХреНрд╢рди рд╕реАрдзреЗ async рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

var RateLimiter = require("limiter").RateLimiter;
var limiter = new RateLimiter(2, "second");
var async = require('async');

function rateLimitedMapper(item, callback)
{
  limiter.removeTokens(1, function(err, remainingRequests) {
    console.log("working on item: " + item);
    callback(null, item.length);
  });
}

async.map(input, rateLimitedMapper, function(err, results) {
  // do something with results
 });

рд╕рднреА 8 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕реА рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рднреА рдкреВрдЫрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред ( #1113 #1082 #1020 #942 #37 ) рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА "рдереНрд░реЙрдЯрд▓реНрдб рдХреНрдпреВ" рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдорд╛рдВрдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдареАрдХ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдПрдХ рдХрдард┐рди рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдпрд╣ рдЙрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд▓реЛрдЧ рд╕рдорд░реНрдкрд┐рдд рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

tl; dr рдЖрдк/async рдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдореВрдерд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЕрдЧрд░ рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рд╢рд╛рдпрдж рдПрдХ рдЯреЛрдХрди рдмрдХреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдПрдХреНрд╕рдкреЛрдиреЗрдВрд╢рд┐рдпрд▓ рд╕реНрдореВрдерд┐рдВрдЧ рдлрдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рддреЛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ :)

рдУрдкреА: рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╣рд▓ рдХрд░ рд▓рд┐рдпрд╛ рд╣реЛ ..... рдореИрдВрдиреЗ рд▓реАрдХрдмрдХреЗрдЯ рдпрд╛ рдЯреЛрдХрди рдмрдХреЗрдЯ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд░ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред https://www.npmjs.com/package/limiter рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЕрддреАрдд рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рджрд░ рд╕реАрдорд┐рдд рдореИрдкрд░ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд░реЗрдВред рдЖрдкрдХрд╛ рдореИрдкрд░ рдлрд╝рдВрдХреНрд╢рди рд╕реАрдзреЗ async рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

var RateLimiter = require("limiter").RateLimiter;
var limiter = new RateLimiter(2, "second");
var async = require('async');

function rateLimitedMapper(item, callback)
{
  limiter.removeTokens(1, function(err, remainingRequests) {
    console.log("working on item: " + item);
    callback(null, item.length);
  });
}

async.map(input, rateLimitedMapper, function(err, results) {
  // do something with results
 });

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ lib рдХреА рддрд░рд╣ рд╣рдореЗрдВ рдЕрдкрдиреЗ рд░реАрдбрдореА рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рд╣рдо рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред

рд╣рд╛рдВ, рдпрд╣ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдПрдХ рдЯреЛрдХрди рдмрд╛рд▓реНрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рд╡рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬреЛ рдореИрдВ рд▓реЗ рд░рд╣рд╛ рдерд╛ред рдореИрдВ рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рддрдХ рд╕реАрдорд┐рдд рджрд░ рдХреЛ рдХрд╛рдлреА рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛ :)

рд╣рд╛рдБ, рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдореИрдВ Async рдХреЗ рднреАрддрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╕реЗ рд░реЛрдорд╛рдВрдЪрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ред рд░реЗрдЯ рд▓рд┐рдорд┐рдЯрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЧрдардЬреЛрдбрд╝ рд╣реЛрддреЗ рд╣реИрдВред

рдЗрд╕ рдкрд░ рдЯреИрдЧ рдмрджрд▓рдиреЗ рд╕реЗ рдпрд╣ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ Async рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

Promise.all рдФрд░ рд╡рд╛рджрд╛-рдереНрд░реЙрдЯрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛:

.

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

trvra picture trvra  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

PsyTae picture PsyTae  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

AaronAcerboni picture AaronAcerboni  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

codeofsumit picture codeofsumit  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ORESoftware picture ORESoftware  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ