ExtJS - 如何使用async - await函数?

问题描述 投票:0回答:1

我有以下代码,使用 async - await...在HTML+JavaScript环境下可以工作,除了我在EXTJS应用程序中使用它,组件监听器。

...
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());
        });
    });
}
...

我得到了错误。期待一个赋值或函数调用,而不是看到一个表达式。

我尝试了 Ext.Promise 没有成功。

extjs async-await extjs6
1个回答
0
投票

解决了! 为每个查询使用一个承诺.代码示例。

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!');
});
© www.soinside.com 2019 - 2024. All rights reserved.