ExtJs承诺范围不起作用

ExtJs承诺范围不起作用,extjs,promise,deferred,extjs6,extjs6-classic,Extjs,Promise,Deferred,Extjs6,Extjs6 Classic,简单例子 console.log(this); new Ext.Promise(function(resolve, reject){ resolve(123); }).then( function(v){ console.log(v); console.log(this); }, function(){}, function(){},

简单例子

    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”函数的最后一个参数不起作用?

Ext.Promise
默认为本机实现。要获得增强的Ext承诺,您需要创建
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);

});

你期待什么?我认为这是正确的。then()只有两个参数:okcallback和errorcallback。如前所述,
.then()
将两个函数作为参数。