zoukankan      html  css  js  c++  java
  • 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);
                    }
                }
            );
        }
  • 相关阅读:
    c++ primer 中讲的顶层const 和 底层 const 理解
    github 0 学习
    MySQL 0 学习
    c++11 move构造函数和move operator 函数 学习
    c++11 多线程 1
    c++ 多线程 0
    学习 emplace_back() 和 push_back 的区别 emplace_back效率高
    crontab执行脚本失败问题
    lucene 排序
    maven 内置变量
  • 原文地址:https://www.cnblogs.com/zihunqingxin/p/4384294.html
Copyright © 2011-2022 走看看