Async.foreach迭代强制停止,直到第一次迭代执行

async.forEach(vsr.vehicles, function(vsr_vehicle, callback){ pjCustom.vehicleJson(vsr_vehicle, function(vehicleInitialize){ Vehicle.find({ where: { vehicleID: (vsr_vehicle.vehicleID).toString().trim() } }).success(function(vehicleFound){ if(vehicleFound){ //Code Logic is working fine. }else{ vehicleBuild.save().success(function(vehicleNew){ // To create new vehicle of updated vsr var vehicleBuild = Vehicle.build(vehicleInitialize) pj.log("Update vehicle ............................") temp.push(vehicleNew.vehicleID) }) } }) }) callback() },function(){ res.send(204) }) //vehicleJSON exports.vehicleJson = function(vsr_vehicle, callback){ pjCustom.getVehicle(vsr_vehicle, function(status, vehicleId){ if (status == true) { vsr_vehicle.vehicleID = vehicleId callback( { 'vehicleID':vsr_vehicle.vehicleID).toString().trim(),'vsr_id':vsr_vehicle.vsr_id}) } }) } //getvehicle exports.getVehicle = function(vsr_vehicle, callback){ if(vsr_vehicle.vehicleID !== undefined){ callback(true, vsr_vehicle.vehicleID) }else{ Vehicle.find({ where: { 'vsr_id': vsr_vehicle.vsr_id }, attributes: ['id', 'vehicleID'],'order': 'id DESC', 'limit': '1' }).success(function(vehicles){ var temp = (vehicles.vehicleID).split("-") var newvehicleId = temp[0]+"-"+temp[1]+"-"+(parseInt(temp[2])+1) callback(true, newvehicleId) }) } } 

说明:

同时从vsr_vehicle插入logging。 我需要检查vehicleID是否存在,如果不存在,它将获取它将创build一个新的Id。 考虑这个代码是用于更新车辆以及插入另外的“两个”新车辆。 如何pipe理asynchronous进程。 插入新车辆。 它并不是等待第一次迭代完成,然后为车辆和两辆新车辆生成相同的车辆ID。 build议我完成这个挑战。

我的代码显然写在这里。

请在请求之前请求复制代码并粘贴在任何JS编辑器中,你肯定会比我的解释更明白。

您在series.forEach中的回叫电话位置不正确。 这里是更正:

 async.forEach(vsr.vehicles, function(vsr_vehicle, callback){ pjCustom.vehicleJson(vsr_vehicle, function(vehicleInitialize){ Vehicle.find({ where: { vehicleID: (vsr_vehicle.vehicleID).toString().trim() } }).success(function(vehicleFound){ if(vehicleFound){ callback(); // <--- call here }else{ vehicleBuild.save().success(function(vehicleNew){ // To create new vehicle of updated vsr var vehicleBuild = Vehicle.build(vehicleInitialize); pj.log("Update vehicle ............................"); temp.push(vehicleNew.vehicleID); callback(); // <--- call here }); } }); }); // callback(); // <--- Don't call here },function(){ res.send(204); }); 

顺便说一句,为了好的做法,在javascript语句的末尾使用分号(“;”)