ページ

2015年11月25日水曜日

node.js配列データを同期処理する方法

Node.jsを利用し配列データを同期処理する方法を記載

どのように表現して良いかわからないのですが
以下のようなデータの処理です。


var datas = [{"id" : "1"}, {"id" : "2"}];

これを
id = 1
id = 2
と表示してくれるのを同期処理で書く方法です。
単純にfor文を利用すれば良いのではという話ではなく
datasはDBに保存したいデータとらえてください。

つまり実際には
INSERT INTO test(id) VALUES(1);
INSERT INTO test(id) VALUES(2);
と上記の処理をしたい比同期処理ではどちらが先にくるか不明のため
順番に配列からSQLを実行したい場合に考えた方法です。

結論的には再起処理を行います。
実際のサンプルは以下です。

function insert(datas, n, callBack) {
    if (datas.length == n) {
        if (callBack != null) callBack();
        return;
    }
    var sql = "INSERT INTO test(id) VALUES(" + datas[n].id + ")";
    console.log(sql);
    // 実際にここでSQLを実行.
    insert(datas, n + 1, callBack);
}

var datas = [{"id" : "1"}, {"id" : "2"}];
insert(datas, 0, function() {
    console.log("complite");
});
上記のようなソースになります。


INSERT INTO test(id) VALUES(1);
INSERT INTO test(id) VALUES(2);
complite
これで同期処理のようにできます。
ライブラリを使えばほかの方法もあると思うのですが
利用しない場合の考え方になります。

callback地獄感もありますが、これはこれで個人的には使い勝手が良いと思っています。