Żeby dalej nie ciągnąć tematu w komentarzach pod pytaniem.
Kolejny problem jaki się pojawił:
pierwsze zapytanie do JSON daje mi zwykłe linki które muszę znów wysłać do api i dostać linki afiliacyjne. w jaki sposób to zrobić?
Mając tablicę produktów, gdzie każdy z nich (jako obiekt) ma pole reprezentujące jego link: result.result.products, tworzysz tablicę tychże linków. Następnie na każdym odpalasz $.getJSON(), z odpowiedzi wyciągasz link afiliacyjny i dorzucasz go do tablicy tych linków. Z racji tego, że to się dzieje asynchronicznie, to zrobiłbym HTMLowy kontener na wszystkie linki, na początku go ukrył. a pokazał dopiero, gdy wszystkie linki afiliacyjne będą gotowe.
Piszesz w jQuery. Ja nie korzystam z tej biblioteki, więc "pi razy drzwi", mniej więcej taki skrypt możesz zrobić.
var products = result.result.products;
var productsAmount = products.length;
var affiliateUrls = [];
var affiliateUrlsContainer = $('#affiliateUrlsContainer');
affiliateUrlsContainer.hide();
$(products).each(function(index, product) {
$.getJSON(product.productUrl, function(affiliateResult) {
// zakladajac, ze link afiliacyjny jest dostepny jako { affiliateResult.url }
var affiliateUrl = affiliateResult.url;
affiliateUrls.push(affiliateUrl);
var afiliateElement = $('#url' + index);
affiliateElement.href = affiliateUrl;
affiliateUrlsContainer.append(affiliateElement);
if (affiliateUrls.length === productsAmount) {
affiliateUrlsContainer.show();
}
});
});
Chociaż zastanawiam się, czy można tu jakoś Promise.all() umieścić, ale nie wiem jak jQuery to wspiera, więc skrypt bardziej na piechotę.