Я пытаюсь запустить функцию дважды, передавая разные параметры для обоих раз, когда функция запускается.
Хотя я думаю, что правильные параметры передаются в нужное время, в какой-то момент мои переменные обновляются, и я не уверен, когда и почему.
Вот мой слегка упрощенный js:
// randomFilter
const postContent = $('.posts');
const limit = 1;
let index = 0;
let tag;
const retrievePosts = () => {
const protocol = document.location.protocol;
const baseURL = 'api.tumblr.com/v2/blog/';
const blog = 'studio-lukeharby.tumblr.com';
if (index === 0) {
tag = 'cubes';
} else if (index === 1) {
tag = 'objects';
}
console.log('index at start:', index);
$.ajax({
type: 'GET',
url: `${protocol}//${baseURL}${blog}/posts`,
dataType: 'jsonp',
data: {
api_key: sw._site.tumblrAPIKey,
tag: tag
},
success: function(data){
let randomNumber;
randomNumber = Math.floor(Math.random() * data.response.total_posts);
console.log(`1st api call tag: ${tag}`);
$.ajax({
type: 'GET',
url: `${protocol}//${baseURL}${blog}/posts`,
dataType: 'jsonp',
data: {
api_key: sw._site.tumblrAPIKey,
offset: randomNumber,
tag: tag,
limit: limit
},
success: function(data) {
postContent.append(`<li><img src='${data.response.posts[0].photos[0].original_size.url}' alt='[${data.response.posts[0].tags}]' /></li>`);
setImgProps();
setWrapperProps();
console.log('randomNumber:', randomNumber, 'posts:', data.response.total_posts);
console.log(`2nd api call tag: ${tag}`);
}
});
},
error: function(error){
pageWrapper.empty();
pageWrapper.append('<p class="content errorInfo">Sorry there was an issue retrieving the data</p>');
postContent.remove();
elem.removeClass(loadingClass);
console.log(error.statusText);
},
complete: function() {
}
});
}
const initCounter = () => {
while (index < 2) {
index++
retrievePosts();
console.log('index:', index, 'tag:', tag);
}
};
postContent.empty();
initCounter();
У меня есть рабочий пример jsfiddle
Теоретически функция должна искать сообщения с тегом 'cubes'
и проверьте общее количество сообщений с этим тегом, а затем верните 1 из них случайным образом. Затем он должен пройти через следующий тег, проверить общее количество сообщений и вернуть случайный с помощью параметра смещения. Таким образом, в теории сообщение всегда должно быть возвращено для каждого цикла.
HALP