javascript - ExtJS如何在两个异步事件后设置一个 Action

标签 javascript extjs

我有两个商店,其中 autoload: true 正在加载数据。我想在两者加载后填充我的用户界面。我遵循 MVC 架构,所以在我的 Controller 中,我尝试做这样的事情:

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

如果你有几个商店,最好使用数组。

关于javascript - ExtJS如何在两个异步事件后设置一个 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16095696/

相关文章:

Javascript 说我的函数不是函数

javascript - IE 内部 HTML 错误

javascript - XmlHttpRequest onprogress 间隔

javascript - 如何解决 Eloquent Javascript "Chess Board"?

ExtJS 4 - 包含其他没有 Id 关系的模型的模型

javascript - ExtJS。我可以将新单元格或行放入渲染面板,布局为 : 'table'

javascript - 从 Rest API 中的 Sequelize 获取用户信息

javascript - Jquery.无法获取jSOn值

ExtJS 6 在内存代理中使用自定义过滤器功能

javascript - 如何在 ExtJS 中用数组填充组合框