Skip to main content

Async Await not waiting until the end

frankly new to js so forgiveme if it's quite silly one.

Firebase functions with Node.js 14 if that matters.

My function (parts of it):

exports.blablabla = functions.region('jajajaj').database.instance('ccc').ref('ddd').onCreate( (change, context) => {


         ...

    /**

    FOR LOOP 


    **/
    for (let i = 0; i < numberOfChild; i++) {


        /**

        CALLING THE ASYNC FUNCTION

        **/

         if ( i >  valueLimit - bufferValue - 1) {



            (async function(){  

            const keyToBeRemoved = pinKeysSorted[i];

            const temp = await myAsync(area, country, section, genderString, keyToBeRemoved, lockMaximumTimeInHours);


            })()

        }

    }


        /**


           SCANNED EVERYTHING , CLOSING OFF


        **/




            /**



                ALIGN THE overFlowValues TO REFLECT THE REAL VALUES



            **/
            const myPromise =  admin.database(zxcf).ref("minop" + genderString ).once('value').then(mySnap => {
                promises.push(myPromise);


                    if (mySnap.val() != null) {



                        admin.database(zxcf).ref("minop).set(mySnap.numChildren()); 

                         console.log("blablabla  | aligned the new value in overFlowValues ")

                    }



                    /**

                        REMOVE THE overFlowOnCreateInternalLock


                    **/

                    admin.database(zxcf).ref("minop" + genderString).remove();

                    console.log("blablabla  | overFlowOnCreateInternalLock removed")


                    }



                ...


});

And the Async function below

async function myAsync(area, country, section, genderString, keyToBeRemoved , lockMaximumTimeInHours){
    
    
    
                                                
                                                
    var   promises                                          = [];
                                                
                                                
                                                
        var isOnlineRef                                         = admin.database(blabla).ref().child(keyToBeRemoved.substr(17)).child("isOnline");
        var lockedByFunctionRef                                 = admin.database(blabla).ref().child(keyToBeRemoved.substr(17)).child("lockedByFunction");
                                    
                                                
                                    
                                    
                                    
        /**
                                                                            
            WE WORK ON IT ONLY IF lockedByFunction IS NOT IN THERE OR LOCK IS OLD
                                                                            
        **/     
        const overFlowOnCreateLockedByFunctionPromise = lockedByFunctionRef.once("value").then(function(snapshotOverFlowOnCreateLockedByFunction) {
        promises.push(overFlowOnCreateLockedByFunctionPromise);
                                                                
                                                                
            /**
                                                                
                 -1 IF LOCK DOES NOT EXSIST
                                                                
            **/
            var lockElapsedTimeInMillis1            = -1;
            const currentDateTimeInMillis           = (new Date()).getTime();
                                                    
            if ( snapshotOverFlowOnCreateLockedByFunction.exists() ) {
                                                                                
                                                                                
                                                                                
                lockElapsedTimeInMillis1 = currentDateTimeInMillis - snapshotOverFlowOnCreateLockedByFunction.val();
                                                                                
            }
            /**
                                                                                                        
                                                                                                        
            P R O C E E D   I F   L O C K   N O T   E X S I S T  O R   L O C K   E X S I S T   A N D   I S   >   T I M E   L I M I T   l o c k M a x i m u m T i m e I n H o u r s
                                                                                                        
                                                                                                        
            **/
                                                                                
            if ( lockElapsedTimeInMillis1 == -1 || lockElapsedTimeInMillis1 > lockMaximumTimeInHours * 3600000 ) {
                                                                                    
            console.log("myAsync | user "+ keyToBeRemoved.substr(17) +" lockedByFunction lock exsist and expired or lock does not exsist, removed the entry if it was there")   
                                                                                        
            /** REMOVE THE LOCK **/ 
            lockedByFunctionRef.remove();
                                                                                     
                                                                                     
                                                                                     
                                                                                     
                                                                                     
                                                                                     
                                                                                     

            /**
                                                                                
                WE WORK ON IT ONLY IF NO LOCK OR LOCK IS OLD
                                                                                
            **/
                                                                        
            const xsxssPromise = isOnlineRef.once("value").then(function(myFunc) {
            promises.push(xsxssPromise);
                                                                    
                                                                
                /**
                                                                
                    -1 IF LOCK DOES NOT EXSIST
                                                                
                **/
                var lockElapsedTimeInMillis2 = -1;
                                                    
                if ( myFunc.exists() ) {
                                                                                
                                                                                
                                                                                
                    lockElapsedTimeInMillis2 = currentDateTimeInMillis - myFunc.val();
                                                                                
                }
                /**
                                                                                                        
                                                                                                        
                    P R O C E E D   I F   L O C K   N O T   E X S I S T  O R   L O C K   E X S I S T   A N D   I S   >   T I M E   L I M I T   l o c k M a x i m u m T i m e I n H o u r s
                                                                                                        
                                                                                                        
                **/
                                                                                
                if ( lockElapsedTimeInMillis2 == -1 || lockElapsedTimeInMillis2 > lockMaximumTimeInHours * 3600000 ) {
                                                                                    
                    console.log("myAsync | user "+ keyToBeRemoved.substr(17) +" isOnline lock exsist and expired or lock does not exsist, removed the entry if it was there")       
                                                                                    
                    /** REMOVE THE LOCK **/    
                    isOnlineRef.remove();
                                    
                                    
                                                                                
                                                                                    
                                        

                                        
                                        
                                                                
                    var   valueToBeOverF;
                                                                            
                                                                            
                                                                            
                    /**
                                                                            
                                                                            
                        READ 
                                                                            
                                                                            
                    **/
                                                                            
                    const ddddPromise =  admin.database(blabla).ref("ccc"+ keyToBeRemoved).once('value').then(mySnap => {
                    promises.push(ddddPromise);
                                                                            
                                                                            
                                                                                
                    console.log("myAsync | read from: "ccc"+ keyToBeRemoved);
                    valueToBeOverF = mySnap.val();
                    console.log("myAsync | value to be overflown: ", valueToBeOverF);
                                                                            

                                                                            
                    /**
                                                                            
                                                                            
                        REMOVE THE ENTRY
                                                                            
                                                                            
                    **/
                                                                            
                    admin.database(blabla).ref("ccc" + keyToBeRemoved ).remove();
                                                                            
                                                                            
                    console.log("myAsync | removed from: "ccc"+ keyToBeRemoved);
                                        
                                            
                    });
                                                                                
                                                                                
                                                                            
                    }
                                                                        
                    else {
                                                                    
                        console.log("myAsync | lock isOnline is present and is not expired for "+ keyToBeRemoved.substr(17) +" , not proceeding");
                        }
                                                                
                                                                
                    });
                }
                                                                
                else {
                                                                    
                    console.log("myAsync | lock lockedByFunction is present and is not expired for "+ keyToBeRemoved.substr(17) +" , not proceeding");
                    }
                });
                                            
  
  
  return Promise.all(promises);
  
}

What I got is not what is expected: Continue the execution of the function only every call of myAsync has completed

myAsync | user kQaIPKQDZsOJadLGRxhnqTCtKGb2 lockedByFunction lock exsist and expired or lock does not exsist, removed the entry if it was there
10:44:07.686 PM

myAsync | user lpRYlj4Z0jRiywFEQt4a86lmzsO2 lockedByFunction lock exsist and expired or lock does not exsist, removed the entry if it was there
10:44:08.586 PM

blablabla | aligned the new value in overFlowValues
10:44:08.587 PM

blablabla | overFlowOnCreateInternalLock removed
10:44:09.485 PM

myAsync | user U853ufGcbMXtf6FZ3UgJee1E0d22 isOnline lock exsist and expired or lock does not exsist, removed the entry if it was there 
10:44:10.085 PM

myAsync | user SI8i56RGbLQrlpugdTKm2qKcHG93 isOnline lock exsist and expired or lock does not exsist, removed the entry if it was there 
10:44:10.885 PM

myAsync | user G6nccJbCiUhzc17KIDMVcdyl9Ot2 isOnline lock exsist and expired or lock does not exsist, removed the entry if it was there 
10:44:12.286 PM

myAsync | user Hzt9qGrorYa5Qe0940WNxK5Y61K3 isOnline lock exsist and expired or lock does not exsist, removed the entry if it was there 

10:44:16.285 PM

myAsync | read from: blabla1
10:44:16.286 PM

myAsync | value to be overflown: { xcf}
10:44:16.485 PM

What I am missing here?

Thank you.

Via Active questions tagged javascript - Stack Overflow https://ift.tt/fdec7Mh

Comments

Popular posts from this blog

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console...

How to split a rinex file if I need 24 hours data

Trying to divide rinex file using the command gfzrnx but getting this error. While doing that getting this error msg 'gfzrnx' is not recognized as an internal or external command Trying to split rinex file using the command gfzrnx. also install'gfzrnx'. my doubt is I need to run this program in 'gfzrnx' or in 'cmdprompt'. I am expecting a rinex file with 24 hrs or 1 day data.I Have 48 hrs data in RINEX format. Please help me to solve this issue. source https://stackoverflow.com/questions/75385367/how-to-split-a-rinex-file-if-i-need-24-hours-data