• 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);
                    }
                }
            );
        }
  • 相关阅读:
    celery定时器
    基于Django的Rest Framework框架的视图组件
    Django的缓存机制
    Django中的跨域请求问题
    基于Django的Rest Framework框架的url控制器
    基于Django的Rest Framework框架的响应器
    基于Django的Rest Framework框架的分页组件
    基于Django的Rest Framework框架的解析器
    虚拟机下CentOS7开启SSH连接
    Vue中computed和watch的区别
  • 原文地址:https://www.cnblogs.com/zihunqingxin/p/4384294.html
Copyright © 2020-2023  润新知