Nodejs学習ノート-非同期プロセス制御
4419 ワード
asyncのインストール
npm install async--gエラー:npm:relocation error:npm:symbol SSL_set_cert_cb, version libssl.so.10 not defined in file libssl.so.10 with link time reference解決方法:yum-y install opensslエラー:Error:Cannot find module'async'解決方法:修正/etc/profile,export NODE_PATH=/usr/lib/node_modules/,source/etc/profile
コード:https://github.com/fengchunjian/nodejs_examples/tree/master/async
クロス実行 //normal.js
function oneFun() {
ii = 0;
setInterval(function() {
console.log("aaa=" + new Date());
ii++;
if (ii == 3) {
clearInterval(this);
}
}, 1000);
console.log("oneFun ");
}
function twoFun() {
jj = 0;
setInterval(function() {
console.log("bbb=" + new Date());
jj++;
if (jj == 3) {
clearInterval(this);
}
}, 1000);
console.log("twoFun ");
}
oneFun();
console.log("oneFun ");
twoFun();
console.log("twoFun ");
console.log(" ");
シリアル関連なし //series.js
var async = require("async");
function exec() {
async.series({
one : function(done) {
ii = 0;
setInterval(function() {
console.log("aaa=" + new Date());
ii++;
if (ii == 3) {
clearInterval(this);
//done(" ", {one:"one "});
done(null, {one:"one "});
}
}, 1000);
},
two : function(done) {
jj = 0;
setInterval(function() {
console.log("bbb=" + new Date());
jj++;
if (jj == 3) {
clearInterval(this);
done(null, {two:"two "});
}
}, 1000);
}
}, function(err, rs) {
console.log(err);
console.log(rs);
});
}
exec();
console.log(" ");
並列関係なし //parallel.js
var async = require("async");
function exec() {
async.parallel({
one : function(done) {
ii = 0;
setInterval(function() {
console.log("aaa=" + new Date());
ii++;
if (ii == 3) {
clearInterval(this);
//done(" ", {one:"one "});
done(null, {one:"one "});
}
}, 1000);
},
two : function(done) {
jj = 0;
setInterval(function() {
console.log("bbb=" + new Date());
jj++;
if (jj == 5) {
clearInterval(this);
done(null, {two:"two "});
}
}, 1000);
}
}, function(err, rs) {
console.log(err);
console.log(rs);
});
}
exec();
console.log(" ");
シリアル関連 //waterfall.js
var async = require("async");
function exec() {
async.waterfall([
function(done) {
ii = 0;
setInterval(function() {
console.log("aaa=" + new Date());
ii++;
if (ii == 3) {
clearInterval(this);
done(null, "one ");
}
}, 1000);
},
function(preValue, done) {
jj = 0;
setInterval(function() {
console.log(preValue + ", bbb=" + new Date());
jj++;
if (jj == 5) {
clearInterval(this);
done(null, preValue + ", two ");
}
}, 1000);
}
], function(err, rs) {
console.log(err);
console.log(rs);
});
}
exec();
console.log(" ");
補足
シリアル無関連:aaaエラー、bbbはパラレル無関連を実行しません:aaaエラー、bbbは実行を続行しますがコールバックを実行しません
リファレンスドキュメント
nodejs13_非同期フロー制御(n 13_async)http://www.yuankuwang.com/web/index.php?r=respool/resview&rpid=46 node.jsチュートリアル13_ひどうきプロセスせいぎょhttp://edu.51cto.com/center/course/lesson/index?id=124538
//normal.js
function oneFun() {
ii = 0;
setInterval(function() {
console.log("aaa=" + new Date());
ii++;
if (ii == 3) {
clearInterval(this);
}
}, 1000);
console.log("oneFun ");
}
function twoFun() {
jj = 0;
setInterval(function() {
console.log("bbb=" + new Date());
jj++;
if (jj == 3) {
clearInterval(this);
}
}, 1000);
console.log("twoFun ");
}
oneFun();
console.log("oneFun ");
twoFun();
console.log("twoFun ");
console.log(" ");
シリアル関連なし //series.js
var async = require("async");
function exec() {
async.series({
one : function(done) {
ii = 0;
setInterval(function() {
console.log("aaa=" + new Date());
ii++;
if (ii == 3) {
clearInterval(this);
//done(" ", {one:"one "});
done(null, {one:"one "});
}
}, 1000);
},
two : function(done) {
jj = 0;
setInterval(function() {
console.log("bbb=" + new Date());
jj++;
if (jj == 3) {
clearInterval(this);
done(null, {two:"two "});
}
}, 1000);
}
}, function(err, rs) {
console.log(err);
console.log(rs);
});
}
exec();
console.log(" ");
並列関係なし //parallel.js
var async = require("async");
function exec() {
async.parallel({
one : function(done) {
ii = 0;
setInterval(function() {
console.log("aaa=" + new Date());
ii++;
if (ii == 3) {
clearInterval(this);
//done(" ", {one:"one "});
done(null, {one:"one "});
}
}, 1000);
},
two : function(done) {
jj = 0;
setInterval(function() {
console.log("bbb=" + new Date());
jj++;
if (jj == 5) {
clearInterval(this);
done(null, {two:"two "});
}
}, 1000);
}
}, function(err, rs) {
console.log(err);
console.log(rs);
});
}
exec();
console.log(" ");
シリアル関連 //waterfall.js
var async = require("async");
function exec() {
async.waterfall([
function(done) {
ii = 0;
setInterval(function() {
console.log("aaa=" + new Date());
ii++;
if (ii == 3) {
clearInterval(this);
done(null, "one ");
}
}, 1000);
},
function(preValue, done) {
jj = 0;
setInterval(function() {
console.log(preValue + ", bbb=" + new Date());
jj++;
if (jj == 5) {
clearInterval(this);
done(null, preValue + ", two ");
}
}, 1000);
}
], function(err, rs) {
console.log(err);
console.log(rs);
});
}
exec();
console.log(" ");
補足
シリアル無関連:aaaエラー、bbbはパラレル無関連を実行しません:aaaエラー、bbbは実行を続行しますがコールバックを実行しません
リファレンスドキュメント
nodejs13_非同期フロー制御(n 13_async)http://www.yuankuwang.com/web/index.php?r=respool/resview&rpid=46 node.jsチュートリアル13_ひどうきプロセスせいぎょhttp://edu.51cto.com/center/course/lesson/index?id=124538
//series.js
var async = require("async");
function exec() {
async.series({
one : function(done) {
ii = 0;
setInterval(function() {
console.log("aaa=" + new Date());
ii++;
if (ii == 3) {
clearInterval(this);
//done(" ", {one:"one "});
done(null, {one:"one "});
}
}, 1000);
},
two : function(done) {
jj = 0;
setInterval(function() {
console.log("bbb=" + new Date());
jj++;
if (jj == 3) {
clearInterval(this);
done(null, {two:"two "});
}
}, 1000);
}
}, function(err, rs) {
console.log(err);
console.log(rs);
});
}
exec();
console.log(" ");
//parallel.js
var async = require("async");
function exec() {
async.parallel({
one : function(done) {
ii = 0;
setInterval(function() {
console.log("aaa=" + new Date());
ii++;
if (ii == 3) {
clearInterval(this);
//done(" ", {one:"one "});
done(null, {one:"one "});
}
}, 1000);
},
two : function(done) {
jj = 0;
setInterval(function() {
console.log("bbb=" + new Date());
jj++;
if (jj == 5) {
clearInterval(this);
done(null, {two:"two "});
}
}, 1000);
}
}, function(err, rs) {
console.log(err);
console.log(rs);
});
}
exec();
console.log(" ");
シリアル関連 //waterfall.js
var async = require("async");
function exec() {
async.waterfall([
function(done) {
ii = 0;
setInterval(function() {
console.log("aaa=" + new Date());
ii++;
if (ii == 3) {
clearInterval(this);
done(null, "one ");
}
}, 1000);
},
function(preValue, done) {
jj = 0;
setInterval(function() {
console.log(preValue + ", bbb=" + new Date());
jj++;
if (jj == 5) {
clearInterval(this);
done(null, preValue + ", two ");
}
}, 1000);
}
], function(err, rs) {
console.log(err);
console.log(rs);
});
}
exec();
console.log(" ");
補足
シリアル無関連:aaaエラー、bbbはパラレル無関連を実行しません:aaaエラー、bbbは実行を続行しますがコールバックを実行しません
リファレンスドキュメント
nodejs13_非同期フロー制御(n 13_async)http://www.yuankuwang.com/web/index.php?r=respool/resview&rpid=46 node.jsチュートリアル13_ひどうきプロセスせいぎょhttp://edu.51cto.com/center/course/lesson/index?id=124538
//waterfall.js
var async = require("async");
function exec() {
async.waterfall([
function(done) {
ii = 0;
setInterval(function() {
console.log("aaa=" + new Date());
ii++;
if (ii == 3) {
clearInterval(this);
done(null, "one ");
}
}, 1000);
},
function(preValue, done) {
jj = 0;
setInterval(function() {
console.log(preValue + ", bbb=" + new Date());
jj++;
if (jj == 5) {
clearInterval(this);
done(null, preValue + ", two ");
}
}, 1000);
}
], function(err, rs) {
console.log(err);
console.log(rs);
});
}
exec();
console.log(" ");
シリアル無関連:aaaエラー、bbbはパラレル無関連を実行しません:aaaエラー、bbbは実行を続行しますがコールバックを実行しません