自分用の co-foreach を作った話


nodejs

co-foreach

coforEachyield
'use strict';
var co = require('co');
var request = require('co-request');

// サイトのタイトルを取ってくる
co(function*(){
  var urlList = [
    'http://example.com',
    'http://google.com',
  ];

  urlList.forEach(function*(url) {
    var res = yield request.get(url);
    var match = res.body.match(/<title>([\s\S]*?)<\/title>/);
    if (match) console.log(match[1].trim());
  });

  process.exit();
});



co-foreach使
'use strict';
var co = require('co');
var request = require('co-request');

var foreach = require('co-foreach');

co(function*(){
  var urlList = [
    'http://example.com',
    'http://google.com',
  ];

  yield foreach(urlList, function*(url) {
    var res = yield request.get(url);
    var match = res.body.match(/<title>([\s\S]*?)<\/title>/);
    if (match) console.log(match[1].trim());
  });

  process.exit();
});


Google
Example Domain






'use strict';
var co = require('co');
var request = require('co-request');
var wait = require('co-wait');

var foreach = require('co-foreach');

co(function*(){
  var urlList = [
    'http://example.com',
    'http://google.com',
  ];

  yield foreach(urlList, function*(url) {
    // Googleにアクセスする前に1秒待つ
    if (url.match(/google/)) yield wait(1000);
    var res = yield request.get(url);
    var match = res.body.match(/<title>([\s\S]*?)<\/title>/);
    if (match) console.log(match[1].trim());
  });

  process.exit();
});


Example Domain
Google






coyieldforEach

co-foreach

使
'use strict';
var co = require('co');
var request = require('co-request');

var foreach = require('co-foreach');

co(function*(){
  var urlList = [
    'http://example.com',
    'http://google.com',
  ];

  yield urlList.forEach(function*(url) {
    var res = yield request.get(url);
    var match = res.body.match(/<title>([\s\S]*?)<\/title>/);
    if (match) console.log(match[1].trim());
  });

  process.exit();
});


Example Domain
Google






Githubnpm

npm install 3846masa/co-foreach



co-rega-foreach



Array.prototype.forEach

forEach使generator function


'use strict';
var foreach = require('co-foreach');

var urlList = [
  'http://example.com',
  'http://google.com',
];

urlList.forEach(function(url) {
  console.log(url);
});

process.exit();
http://example.com
http://google.com


for

PerlCfor使