ExtJS如何在两个异步事件之后设置一个动作

ExtJS how to set up an action after two asynchronous events

本文关键字:设置 之后 事件 一个 两个 ExtJS 异步      更新时间:2023-09-26

我有两个存储与autoload: true加载数据。我想在后填充我的UI,这两个都加载了。我遵循MVC架构,所以在我的控制器,我试图做这样的事情:

store1.on('load', me.setUpIfBothStoresReady, me);
store2.on('load', me.setUpIfBothStoresReady, me);
setUpIfBothStoresReady: function() {
    if(store1.isSuccessfullyLoaded() && store2.isSuccessfullyLoaded()) {
        // do work
    }
}

问题是,此时可能已经加载了一个或两个存储。除了手动控制这些商店的负载外,是否有一些设计模式我可以使用,只有在两者都完成后才能做工作?

你可以使用像whenjs这样的东西来处理延迟事件。

https://github.com/cujojs/when/wiki/Examples

或者自己写:

loadStores: function() {
    ...
    me.loaded = 0;
    store1.on('load', me.setUpIfBothStoresReady, me);
    store2.on('load', me.setUpIfBothStoresReady, me);
},
...
setUpIfBothStoresReady: function() {
    ++this.loaded;
    if (this.loaded == 2) {
        //do work
    }
}

如果你有几个存储,最好使用array.

相关文章: