私が始めているJavaScriptコード:
function doSomething(url) {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: rssToTarget
});
}
使用したいパターン:
//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)
});
}
コールバックをこのように機能させることはできないと思いますか?適切なパターンは何ですか?グローバル変数を使用してelem
またはelemの名前を一時的に保持する必要はありません。
このような...
function doSomething(url, elem) {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: function(xml) {
rssToTarget(xml, elem);
}
});
}
コメントへの回答: 匿名関数の使用はパフォーマンスに影響しますか?
RssToTarget関数内で closure を作成すると、使用したいパターンが機能します。
_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)
});
}
_
rssToTarget(elem)
が実行されると、要素パラメーターは closure に保存され、実行を待機するコールバック関数が返されます。