【问题标题】:EXT js How to invoke Store synchronouslyEXT js如何同步调用Store
【发布时间】:2015-12-23 13:04:46
【问题描述】:

我需要弄清楚如何同步调用这个函数。

    fetchData: function(recs){
    store = Ext.getStore('OutOfBalanceList');
    store.reload({
        params: {
            startDate: searchForm.startDate,
            endDate: searchForm.endDate,
            cusip: searchForm.cusip,
            account: searchForm.account
        },
        callback: function (records, options, success) {
            recs = records.length;
            return recs;
        }
    });
},  

我很欣赏所有关于异步的布道,但是在这种情况下我必须使用同步调用,因为当返回的数据为空时,我必须使用不同的参数再次回调。目前这最终成为一个无限循环,因为“recs”没有在外面改变!

非常感谢

【问题讨论】:

    标签: javascript synchronization extjs5 extjs6


    【解决方案1】:

    不要试图让它同步。在回调方法中执行“使用不同参数再次调用”。像这样的:

    fetchData: function(recs) {
      var me = this;
      store = Ext.getStore('OutOfBalanceList');
      store.reload({
        params: {
          startDate: searchForm.startDate,
          endDate: searchForm.endDate,
          cusip: searchForm.cusip,
          account: searchForm.account
        },
        callback: function (records, options, success) {
          if (records.length == 0) {
            me.fetchDataWithDifferentParameters();
          }
        }
      });
    }
    

    如果您要使用 JavaScript 框架并调用外部数据源,那么学习如何使用回调非常重要。

    【讨论】:

    • 我确实明白了这一点,但感谢您的回答。似乎 EXTJS 不支持同步调用。我=这个;绊倒了我一段时间。所以,我接受你的回答。顺便问一下,你是我皇后区的老朋友鲍勃·沃特金斯吗?
    • 您可以让它进行同步调用 - 代理可以配置为使用同步 AJAX 支持(尽管不鼓励这样做,并且浏览器对它的支持已被弃用)。但这是个坏主意——在通话期间整个浏览器都被锁定了。从未去过皇后区;我住在澳大利亚。
    猜你喜欢
    • 2011-09-08
    • 2013-05-06
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 2015-05-21
    • 2014-03-29
    • 2014-04-18
    相关资源
    最近更新 更多