2

I have the following code, using async - await... that works in HTML + JavaScript environment, except if I use it inside EXTJS App, component listener.

...
onListInitialize: function(component, eOpts) 
{
    const citiesRef= db.collection("cities");

    // defining async function
    async function getIsCapitalOrCountryIsItaly() {
        const isCapital = citiesRef.where('capital', '==', true).get();
        const isItalian = citiesRef.where('country', '==', 'Italy').get();

        const [capitalQuerySnapshot, italianQuerySnapshot] = await Promise.all([
            isCapital,
            isItalian
        ]);

        const capitalCitiesArray = capitalQuerySnapshot.docs;
        const italianCitiesArray = italianQuerySnapshot.docs;

        const citiesArray = capitalCitiesArray.concat(italianCitiesArray);

        return citiesArray;
    }

    //We call the asychronous function
    getIsCapitalOrCountryIsItaly().then(result => {
        result.forEach(docSnapshot => {
            console.log(docSnapshot.data());
        });
    });
}
...

I'm getting the error: Expected an assigment or function call and instead saw an expression.

I tried Ext.Promise without success.

mkrieger1
  • 19,194
  • 5
  • 54
  • 65
Silver Lora
  • 107
  • 1
  • 9

1 Answers1

2

SOLVED! Using one promise for each query. Sample of code:

Ext.Promise.all([
    new Ext.Promise(function(resolve, reject) {
        setTimeout(function() {
            resolve('one');
        }, 5000);
    }),
    new Ext.Promise(function(resolve, reject) {
        setTimeout(function() {
            resolve('two');
        }, 4000);
    })
])
.then(function(results) {

    console.log('first function result', results[0]);
    console.log('second function result', results[1]);

    Ext.Msg.alert('Success!', 'All promises returned!');
});
Silver Lora
  • 107
  • 1
  • 9