这个回调函数哪里有问题?

1.当data.length=3时,数据库中却只存入了2条数据,是因为回调函数写错了吗?

function insertData(data){

    var events = [];
    var count = 0;
    for (var i = 0; i < data.length; i++) {
        (function(i){
            var obj = data[i];    
            function insert(callback){
                count++;    
                console.log(count);
                _getNewSN({
                    query : {category : "ProjectOID_" + obj.ProjectOID},
                    success : function(sn){
                        var param = [
                                parseInt(obj.FunctionCode) ,
                                parseInt(obj.StartRegister) ,  
                                parseInt(obj.Length) , 
                                obj.Description, 
                                obj.ProjectHardwareOID , 
                                sn.SN];
                        var sql = "insert into " + 
                                "plcModbusTCPDB(FunctionCode,StartRegister," + 
                                "Length,Description,ProjectHardwareOID," + 
                                "DataID) values(?,?,?,?,?,?)";
                        yjDBService.exec({
                            sql:sql,
                            parameters : param,
                            success : sender.success,
                            error : sender.error
                        });
                        callback(null,obj);
                    },
                    error : sender.error
                })
            }  
            events.push(insert);
        })(i)
    }

    async.waterfall(events,function(err,result){
        if(err){
            sender.error(err);
        }else{
            sender.success(result);
        }
    })    
}### 问题描述

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 1.3k
2 个回答

可能有一次不能够执行到success方法内。
请问:_getNewSN这个方法的error为什么不调用callback

你把代码 “count++” 放在success函数里面

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题