简体   繁体   English

打破Javascript的每个功能

[英]break from each function of Javascript

Please don't mark duplicate or give negative mark before reading it carefully. 在仔细阅读之前,请不要标记重复或给出负面标记。

Break from .each function of Mongodb cursor function after reading all documents & continue for logic further. 在阅读所有文档后,从Mongodb光标函数的.each函数中断,并继续进行逻辑。 I know there is no break statement for each loop. 我知道每个循环都没有break语句。

I am looping over each document in Mongodb & after finishing off i want to do my further logic. 我在Mongodb中循环遍历每个文档并在完成后我想做进一步的逻辑。 If i give 'return' statement it will take me out of function. 如果我给出“返回”声明,它将使我失去功能。 i don't want to go out of function. 我不想失去功能。

function update (){               
          var resultCursor = dbCollection.find();
           resultCursor.each(function(err, result) {
           if (result == null)
           {
            //// I want to break from here & continue to logic further
             //return false;

           };
           console.log('result  for each item is ',result);

           //Calculate distance for from location if < 1000 meters
            riderFromLat = reqBody.fromLoc.lat;
            riderFromLong = reqBody.fromLoc.lng;

          var fromDistance = geolib.getDistance({latitude: riderFromLat, longitude: riderFromLong }, {latitude: result.fromLoc.coordinates[0], longitude: result.fromLoc.coordinates[1]});

         console.log(' From Distance is ',fromDistance);
          if ( fromDistance < 1000 )
            {

          riderToLat = reqBody.toLoc.lat;
          riderToLong = reqBody.toLoc.lng;

             var toDistance = geolib.getDistance({latitude: riderToLat, longitude: riderToLong }, {latitude: result.toLoc.coordinates[0], longitude: result.toLoc.coordinates[1]});
              console.log(' To Distance is ',toDistance);

               if (toDistance <= 1000)
                {
                   jsonResultData.finalMatchDriverList.push(result);
                }
            }
         });


        // Want to continue with logic further here over jsonResultData
 console.log ('jsonResultData.finalMatchDriverList.length',jsonResultData.finalMatchDriverList.length );
} 

Question :- I want to loop over each document & after looping i want to continue my code further. 问题: - 我想遍历每个文档并在循环之后我想继续我的代码。 Hopefully there must be solution for this one. 希望这个必须有解决方案。 Need some guidance for that only. 仅需要一些指导。

I'm not familiar with MongoDB and can't judge if there's a better way of doing it (and probably there is) but given your description this is possibly what you want: 我不熟悉MongoDB并且不能判断是否有更好的方法(可能有)但是根据你的描述,这可能是你想要的:

function update (){
      var results = [];

      function  doThisAfterwards() {
        // you can access results here; 
      }

      var resultCursor = dbCollection.find();
       resultCursor.each(function(err, result) {
           if(result) {
                // do what you want
                results.push(result);
           }
           else  {
                doThisAfterwards();
           }
       );
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM