我很好奇什么被认为是更好的风格/正确的做事方式.
在javascript中,我可以执行以下操作:
function one() {
two(param, function(ans){
// do more work
});
}
function two(param, callback) {
var answer;
//do work
callback(answer);
}
Run Code Online (Sandbox Code Playgroud)
但是我可以通过简单地返回答案得到类似的结果:
function one() {
var ans = two(param);
// do more work
}
function two(param, callback) {
var answer;
//do work
return answer;
}
Run Code Online (Sandbox Code Playgroud)
我认为,如果您只需要"回答",那么最好使用第二个版本并返回该值而不是将回调函数作为参数传递等等 - 我的想法是否正确?关于两者相对表现的任何想法?同样,我希望返回版本在性能方面更好.
我有一个带有一些自定义列的网格,我希望能够对此列进行排序 - 我想根据其中显示的内容对其进行排序,但实际上我无法弄清楚如何为列定义排序器这将不会基于dataIndex - 我尝试使用自定义模型,但我无法让它工作.
{
text: 'Parent',
dataIndex: 'Parent',
renderer: function(value, meta, record) {
var ret = record.raw.Parent;
if (ret) {
return ret.Name;
} else {
meta.tdCls = 'invisible';
return record.data.Name;
}
},
sortable: true
},
Run Code Online (Sandbox Code Playgroud) 我发现因为我正在开发extjs应用程序(拉力赛应用程序),有时我需要的数据来自记录是在record.raw而不是在record.data中.这两者之间有什么区别,为什么会出现这种情况?
编辑 - 添加示例(可排序的父级列 - 我的其他问题之一)
{text: 'Parent', dataIndex: 'Parent',
doSort: function(state) {
var ds = this.up('grid').getStore();
var field = this.getSortParam();
ds.sort({
property: field,
direction: state,
sorterFn: function(v1, v2){
if (v1.raw.Parent) {
v1 = v1.raw.Parent.Name;
} else {
v1 = v1.data.Name;
}
if (v2.raw.Parent) {
v2 = v2.raw.Parent.Name;
} else {
v2 = v2.data.Name;
}
return v1.localeCompare(v2);
}
});
},
renderer: function(value, meta, record) {
var ret = record.raw.Parent;
if (ret) {
return ret.Name;
} else {
meta.tdCls = 'invisible'; …
Run Code Online (Sandbox Code Playgroud) 我一直在研究melonJS教程,同时牢记我的应用程序.
我希望能够以编程方式添加实体,而不是在为每个级别加载的.tmx文件中指定它们.这是可能的melonJS还是必须使用平铺编辑器指定实体?这似乎相当严格.
或者melonJS只是这个任务的错误框架,如果是这样,还有另一个框架可能比仅仅在画布上绘图更好吗?