这是最奇怪的事情,我曾经遇到过。在Sencha Touch中,我定义了一个新类和一些方法。现在问题在于getAll
方法
我想在then
函数中返回结果,但结果不是returning
当我console
时,它会显示结果。什么似乎是问题,我认为它的私人功能,但我如何公开。
当我创建小袋的新实例时,它不会返回我想要的结果
Ext.define('Inertia.view.Pouch', {
config:{
database: 'Sencha',
db: false,
result: false,
},
constructor : function(config) {
if(config){
this.setDatabase(config);
}
this.setDb(//);
this.initConfig(config);
},
// get All results
getAll: function(){
var me = this;
me.data = 'NO Record found';
var res = me.getDb().allDocs({
include_docs: true,
attachments: true
}).then(function (result) {
**// I want this return to be returned when i call getAll()**
me.data = result;
// i even tried this
return result;// but its also not working
}).catch(function (err) {
console.log(err);
});
return me.data;
}
});
当我这样做时
var p = new Ext.create('test.view.Pouch', 'sencha');
var data = p.getAll();
显示
'没有找到记录';
答案 0 :(得分:0)
您唯一的方法是返回承诺并从函数中管理数据。 然后在异步中运行,因此数据将仅在其内部定义。
getAll: function(){
var me = this;
var res = me.getDb().allDocs({
include_docs: true,
attachments: true
});
return res ;
}
});
var p = new Ext.create('test.view.Pouch', 'sencha');
var data,
datapromise = p.getAll();
datapromise.then(function (result) {
data = result;
// do your stuff here
}).catch(function (err) {
data='NO Record found';
console.log(err);
});
答案 1 :(得分:0)
我已经提到你的问题是Promises - 你在Promise有机会实现之前从函数返回了一些东西 - 编辑了你的代码,试试吧
// get All results
getAll: function(){
var me = this;
me.data = 'NO Record found';
var res = me.getDb().allDocs({
include_docs: true,
attachments: true
}).then(function (result) {
// Possible check results here if no records are found.
me.data = result;
return result
}).catch(function (err) {
// Handle error here
console.log(err);
});
}