JavaScript code I'm starting with:
JavaScript代码:
function doSomething(url) {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: rssToTarget
});
}
Pattern I would like to use:
我想使用的模式:
//where elem is the target that should receive new items via DOM (appendChild)
function doSomething(url, elem) {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: rssToTarget(elem)
});
}
I don't think I can get the callback to work this way, right? What is the proper pattern? I don't want to use global variables necessarily to temporarily hold the elem
or elem name.
我不认为我能让回调这样工作,对吧?正确的模式是什么?我不想使用全局变量来临时保存elem或elem的名称。
2 个解决方案
#1
94
Like this...
像这样…
function doSomething(url, elem) {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: function(xml) {
rssToTarget(xml, elem);
}
});
}
Answer to your comment: Does use of anonymous functions affect performance?
回答你的评论:使用匿名函数会影响性能吗?
#2
30
The pattern you'd like to use could work if you create a closure inside your rssToTarget function:
如果在rssToTarget函数中创建一个闭包,您希望使用的模式可以工作:
function rssToTarget(element) {
return function (xmlData) {
// work with element and the data returned from the server
}
}
function doSomething(url, elem) {
$.ajax({ type: "GET",
url: url,
dataType: "xml",
success: rssToTarget(elem)
});
}
When rssToTarget(elem)
is executed, the element parameter is stored in the closure, and the callback function is returned, waiting to be executed.
当执行rssToTarget(elem)时,元素参数存储在闭包中,返回回调函数,等待执行。
#1
94
Like this...
像这样…
function doSomething(url, elem) {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: function(xml) {
rssToTarget(xml, elem);
}
});
}
Answer to your comment: Does use of anonymous functions affect performance?
回答你的评论:使用匿名函数会影响性能吗?
#2
30
The pattern you'd like to use could work if you create a closure inside your rssToTarget function:
如果在rssToTarget函数中创建一个闭包,您希望使用的模式可以工作:
function rssToTarget(element) {
return function (xmlData) {
// work with element and the data returned from the server
}
}
function doSomething(url, elem) {
$.ajax({ type: "GET",
url: url,
dataType: "xml",
success: rssToTarget(elem)
});
}
When rssToTarget(elem)
is executed, the element parameter is stored in the closure, and the callback function is returned, waiting to be executed.
当执行rssToTarget(elem)时,元素参数存储在闭包中,返回回调函数,等待执行。