Я собираю данные из API WordPress и помещаю их в массив, используя несколько запросов после нажатия кнопки, которая запускает initGetComments () функция.
Массивы:
singleCommentResults: CommentsItem[] = [];
commentsResults = [];
Функция инициализации:
initGetComments(){
var btn = document.getElementById("comment_btn");
if (!btn.classList.contains('clicked')){
var posts = document.getElementsByClassName('single-post');
for( var i = 0; i < posts.length; i++ ) {
this.getComments(posts[i].id).subscribe(data => {
this.singleCommentResults = data;
this.commentsResults.push(this.singleCommentResults[0]);
console.warn("commentsResults =", this.commentsResults);
})
}
} else {
console.log('Comments already downloaded!')
}
btn.classList.add("clicked");
}
функция получения:
getComments(ID:string): Observable<CommentsItem[]> {
console.log(ID);
return this.http
.get(`https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/posts/${ID}/replies/?number=1`)
.map(res =>
res.comments.map(
item =>
new CommentsItem(
item.post.ID,
item.ID,
item.author.name,
item.author.avatar_URL,
item.date,
item.raw_content
)
)
);
}
На данный момент все этизапросы отправляются в одно и то же время, и я хотел бы отправить каждый из них после завершения предыдущего.