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

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

Sorting large arrays of big numeric stings

I was solving bigSorting() problem from hackerrank: Consider an array of numeric strings where each string is a positive number with anywhere from to digits. Sort the array's elements in non-decreasing, or ascending order of their integer values and return the sorted array. I know it works as follows: def bigSorting(unsorted): return sorted(unsorted, key=int) But I didnt guess this approach earlier. Initially I tried below: def bigSorting(unsorted): int_unsorted = [int(i) for i in unsorted] int_sorted = sorted(int_unsorted) return [str(i) for i in int_sorted] However, for some of the test cases, it was showing time limit exceeded. Why is it so? PS: I dont know exactly what those test cases were as hacker rank does not reveal all test cases. source https://stackoverflow.com/questions/73007397/sorting-large-arrays-of-big-numeric-stings

How to load Javascript with imported modules?

I am trying to import modules from tensorflowjs, and below is my code. test.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title </head> <body> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@2.0.0/dist/tf.min.js"></script> <script type="module" src="./test.js"></script> </body> </html> test.js import * as tf from "./node_modules/@tensorflow/tfjs"; import {loadGraphModel} from "./node_modules/@tensorflow/tfjs-converter"; const MODEL_URL = './model.json'; const model = await loadGraphModel(MODEL_URL); const cat = document.getElementById('cat'); model.execute(tf.browser.fromPixels(cat)); Besides, I run the server using python -m http.server in my command prompt(Windows 10), and this is the error prompt in the console log of my browser: Failed to loa...