async 예

5862 단어 async
 function iniProcessDetail(isjob) {

        var cursor = logColl.find({}).sort({ip: 1});

        var insertbolk = [];

        var eveipobj = {};

        var hasinsertdetail = 0;

        var goNext = true;



        function InsertDbs(teminsert) {

            console.log("will insert" + teminsert.length);

            (function (insertbolk) {

                logprocessDetailColl.insert(insertbolk, function (err) {

                    hasinsertdetail += insertbolk.length;

                    console.log("insert insertprocessDetails count" + hasinsertdetail);

                });

            })(teminsert)

            insertbolk = [];

        }



        async.whilst(

            function () {

                return goNext;

            },

            function (callback) {

                cursor.nextObject(function (err, item) {

                    // less 1

//                    if (insertbolk.length == 1000) {

//                        InsertDbs(insertbolk);

//                    }

                    if (item) {

                        setTimeout(function () {

                            function inieveipobj(eveipobj, item) {

                                eveipobj._id = eveipobj._id || item.ip;

                                eveipobj.value = eveipobj.value || {};

                                eveipobj.value.arr = eveipobj.value.arr || [];

                                return eveipobj;

                            }



                            eveipobj = inieveipobj(eveipobj, item);

                            if (eveipobj._id != item.ip) {

                                (function (eveipobj) {

                                    var prodetail = ipMeta.getProcessDetail(eveipobj)

                                    insertbolk.push(prodetail);

                                })(eveipobj)

                                eveipobj = {};

                                eveipobj = inieveipobj(eveipobj, item);

                            }

                            var obj = {}

                            obj.gps = item.gps;

                            obj.created = item.created;

                            eveipobj.value.arr.push(obj);

                            if (insertbolk.length == 1000) {

                                InsertDbs(insertbolk);

                            }

                            callback();

                        }, 5);



                    } else {

                        goNext = false;

                        callback();

                    }

                })

            },

            function (err) {

                if (insertbolk.length > 0) {

                    InsertDbs(insertbolk);

                }

                console.log('No Map/Reduce IniProdetails Finished', err);

                if (isjob) {

                    fromDetailTolocation(isjob);

                }

            }

        );

    }

좋은 웹페이지 즐겨찾기