gpt4 book ai didi

angularjs - promise - 在 $q.all 之后我得到相同的结果

转载 作者:行者123 更新时间:2023-12-02 22:32:08 29 4
gpt4 key购买 nike

我有这个代码:

return WordPress.getAllCategories()
.then(function (cats) {
var category = {};
$q.all(cats.data.map(function (cat) {
return WordPress.getLatestPostOfCategory(cat.id)
.then(function (post) {
return WordPress.getMediaById(post.data.featured_media)
.then(function (media) {

console.log('post id: ' + post.data.id);

console.log('Post title: ' + post.data.title.rendered);

category.post = {};
category.post.id = post.data.id;
category.post.title = post.data.title.rendered;
category.post.content = post.data.content.rendered;

var splitted = category.post.content.split('<p><!--more--></p>');
category.post.introAsHtml = splitted[0];
category.post.contentAsHtml = splitted[1];

category.post.thumbnail = media.data.source_url;

return category;
});
});
})).then(function (res) {
console.log(res);
});
});

加载杂志主页每个类别的最新文章(使用 WordPress REST api 和 $http 请求)。流程如下:1. 加载所有类别。2. 获取每个类别的最新帖子。3.获取最新帖子的媒体。4. 根据帖子数据构建 category.post 对象,并添加收到的媒体的缩略图(特定于帖子)。5.所有promise解决后,$scope.categories =categories申请查看。

问题:

通过上面的代码,我可以看到控制台日志正确搜索不同的帖子和媒体,但最后我得到一个包含类别的数组,所有帖子都是相同的。相同的标题、内容、缩略图以及所有内容。

我在这里的 promise 做错了什么?

附注所有 WordPress 服务功能均正常运行。他们通过来自 WordPress 博客的 $http 请求收到必要的数据后返回一个已解决的 promise 。

问候。

最佳答案

试试这个方法:

return WordPress.getAllCategories()
.then(function (cats) {
$q.all(cats.data.map(function (cat) {
return WordPress.getLatestPostOfCategory(cat.id)
.then(function (post) {
return WordPress.getMediaById(post.data.featured_media)
.then(function (media) {

console.log('post id: ' + post.data.id);

console.log('Post title: ' + post.data.title.rendered);

var category = {}; // moved declaration here to return new instance each time
category.post = {};
category.post.id = post.data.id;
category.post.title = post.data.title.rendered;
category.post.content = post.data.content.rendered;

var splitted = category.post.content.split('<p><!--more--></p>');
category.post.introAsHtml = splitted[0];
category.post.contentAsHtml = splitted[1];

category.post.thumbnail = media.data.source_url;

return category;
});
});
})).then(function (res) {
console.log(res);
});
});

您返回相同的类别对象实例,我只是每次在 getMediaById 回调中创建新实例

关于angularjs - promise - 在 $q.all 之后我得到相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36743261/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com