【发布时间】:2013-02-25 22:18:11
【问题描述】:
我正在尝试通过 jQuery 迁移到使用 Promise。在我的原始代码中,我有一个回调参数,用于接收修改后的数据:
var getRss = function (url, fnLoad) {
$.get(url, function (data) {
var items = [];
$(data).find('item').each(function (index) {
items.push({
title: $(this).find('title').text(),
pubDate: $(this).find('pubDate').text()
});
});
fnLoad(items);
});
}
我尝试更改为承诺,但“完成”返回未修改的数据而不是解析的数据:
var getRss = function (url) {
return $.get(url).done(function (data) {
var items = [];
$(data).find('item').each(function (index) {
items.push({
title: $(this).find('title').text(),
pubDate: $(this).find('pubDate').text()
});
});
});
}
然后像下面这样使用它,但我得到的是原始 XML 版本,而不是转换为对象的修改版本:
getRss('/myurl').done(function (data) {
$('body').append(template('#template', data));
});
【问题讨论】:
-
您在第二个 sn-p 中不接受
fnLoad参数。 -
谢谢我修正了错字。在第二个 sn-p 中,我期望取回之前“完成”执行的修改数据,但它始终在整个链中返回原始数据。
标签: javascript jquery jquery-deferred promise