在向上传递promise时更改数据结果
Change data result while passing promise up chain?
我正试图通过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);
});
}
我尝试更改为promise,但"done"返回未修改的数据,而不是解析的数据:
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));
});
您想要使用then
(阅读pipe
的文档,请参阅jQuery 1.8中的pipe((和then((文档与现实(:
function getRss(url) {
return $.get(url).then(function (data) {
var items = [];
$(data).find('item').each(function (index) {
items.push({
title: $(this).find('title').text(),
pubDate: $(this).find('pubDate').text()
});
});
return items;
});
}
…其工作原理类似
function getRss(url) {
var dfrd = $.Deferred();
$.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()
});
});
dfrd.resolve(items);
}).fail(dfrd.reject);
return dfrd.promise();
}
相关文章:
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 无法使用streams/highland.js从mongodb的结果中获取数据
- 从 Angular 数据工厂中的 HTTP POST 请求接收未定义的结果
- 停止 jQuery 自动完成以过滤/搜索结果并填充整个源数组数据
- 有没有一个简单的解决方案可以根据3个数据找到结果
- 将base64图像数据作为src分配给图像时,Firefox和Chrome上的结果不一致
- 重新排序angularjs ngRepeat与后续数据结果
- 从sqlite数据库查询数据结果文件名
- 如何显示查询回调数据结果仅从开始
- 从 JSON 文件加载后立即使用数据结果
- 如何避免数据结果中的 html 代码
- 将 JavaScript 数据结果放入表单输入值
- 将段落文本设置为 JSON 数据结果
- 通过循环更改 JSON 格式的数据.结果是三倍
- 数据显示更新数据结果,但更新数据结果是不工作的PHP
- 如何让jquery循环json数据结果,以创建一个两列表
- 跨域请求显示数据结果
- 在向上传递promise时更改数据结果
- 如何合并两个facebook图api数据结果(JSON)
- 如何从ajax数据结果填充javascript数组