我有这个函数在加载类别名称后回调文章。我的问题是因为$ http是异步的,所以在完成对类别名称的加载之前触发回调。 我是一个有角度的初学者,所以一些帮助会很好,我试图解决这个问题大约5小时。谢谢。
忘记添加我的其他方法:
function getData(callback) {
$http.get('http://www.myurl.de/wp-json/wp/v2/posts')
.then(function(res) {
var articles = res.data;
setCategory(articles, function(result) {
cachedData = result;
callback(result);
});
});
}
function setCategory(articles, callback) {
for (var j = articles.length - 1; j >= 0; j--) {
var article = articles[j];
for (var i = article.categories.length - 1; i >= 0; i--) {
if (article.categories[i] === 614) {
article.categories.splice(i, 1);
}
$http.get('http://www.myurl.de/wp-json/wp/v2/categories/' + article.categories[i])
.then(function(res) {
article.categories = res.data.name;
articles[j] = article;
if (j == 0 && i == 0) {
callback(articles);
}
});
}
}
}
答案 0 :(得分:1)
我想首先说,如果可能的话,使用1 ajax请求获取所有文章...因为这么多请求效率非常低......
但这是你需要做的才能让它发挥作用......
你需要在加载函数完成后运行promise内的callack才能运行,如果你想使用多个请求,只有在完成之后你应该检查回调是否在数组的末尾,< / p> 像这样:
function setCategory(articles, callback) {
for (var j = articles.length - 1; j >= 0; j--) {
var article = articles[j];
for (var i = article.categories.length - 1; i >= 0; i--) {
if (article.categories[i] === 614) {
article.categories.splice(i, 1);
}
$http.get('http://www.myurl.de/wp-json/wp/v2/categories/' + article.categories[i])
.then(function (res) {
article.categories = res.data.name;
articles[j] = article;
// only run the callback at the last response
if (j == 0 && i == 0) {
callback(articles);
}
});
}
}
}