Hos*_*ein 6 javascript extjs promise gridpanel extjs-stores
我有一个网格列表,可以由最终用户在表单中更改其数据.最后,我想通过单击按钮同步所有网格,然后执行操作.
我写了下面的代码:
$.when.apply(
Ext.ComponentQuery.query('grid')
.forEach(function(item) {
if (item.getXType() == "grid") {
if (item.store.getNewRecords().length > 0 || item.store.getUpdatedRecords().length > 0 || item.store.getRemovedRecords().length > 0) {
item.store.sync();
}
}
})).then(function (results) {
//do something
});
Run Code Online (Sandbox Code Playgroud)
问题在于store.sync()不等待回调.
这样做的推荐方法是什么?
我这样做Promise:
// Sync grid data if exist dirty data
Promise.all(
Ext.ComponentQuery.query('grid')
.map(grid => grid.getStore())
.filter(s => (s.getNewRecords().length + s.getUpdatedRecords().length + s.getRemovedRecords().length) > 0)
.map(s => new Promise((resolve, reject) => {
s.sync({
success: () => { resolve(); },
failure: () => { reject(); }
});
}))
).then(() => {
//do something
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10299 次 |
| 最近记录: |