【问题标题】:ExtJs Promise scope not workExtJs Promise 范围不起作用
【发布时间】:2017-06-19 10:03:51
【问题描述】:

简单示例

    console.log(this);
    new Ext.Promise(function(resolve, reject){
        resolve(123);
    }).then(
        function(v){
            console.log(v);
            console.log(this);
        },
        function(){},
        function(){},
        this
    );

结果是:

constructor {compDomain: constructor, type: "patient", eventbus: constructor, $observableInitialized: true, hasListeners: HasListeners…}
123
Window {speechSynthesis: SpeechSynthesis, caches: CacheStorage, localStorage: Storage, sessionStorage: Storage, webkitStorageInfo: DeprecatedStorageInfo…}

为什么'then'函数的最后一个参数不起作用?

【问题讨论】:

  • 你期待什么?正如我所见,这是正确的。 .then() 只有两个参数:okcallback 和 errorcallback。
  • 阅读documentation of promises.。如前所述,.then() 接受两个函数作为参数。

标签: extjs promise deferred extjs6 extjs6-classic


【解决方案1】:

Ext.Promise 默认为原生实现。要获得增强的 Ext Promise,您需要创建一个 Ext.Deferred 的实例:

Ext.onReady(function() {

    var deferred = new Ext.Deferred();

    setTimeout(function() {
        deferred.resolve('GO');
    }, 1000);

    var scope = {
        foo: 'bar'
    };

    Ext.Deferred.all([deferred.promise]).then(function() {
        console.log(this.foo);
    }, null, null, scope);

});

【讨论】:

    猜你喜欢
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多