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...

ValueError: X has 10 features, but LinearRegression is expecting 1 features as input

So, I am trying to predict the model but its throwing error like it has 10 features but it expacts only 1. So I am confused can anyone help me with it? more importantly its not working for me when my friend runs it. It works perfectly fine dose anyone know the reason about it? cv = KFold(n_splits = 10) all_loss = [] for i in range(9): # 1st for loop over polynomial orders poly_order = i X_train = make_polynomial(x, poly_order) loss_at_order = [] # initiate a set to collect loss for CV for train_index, test_index in cv.split(X_train): print('TRAIN:', train_index, 'TEST:', test_index) X_train_cv, X_test_cv = X_train[train_index], X_test[test_index] t_train_cv, t_test_cv = t[train_index], t[test_index] reg.fit(X_train_cv, t_train_cv) loss_at_order.append(np.mean((t_test_cv - reg.predict(X_test_cv))**2)) # collect loss at fold all_loss.append(np.mean(loss_at_order)) # collect loss at order plt.plot(np.log(al...