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()
将两个函数作为参数。