Изначально я не являюсь автором этого кода, поэтому извиняюсь за пробелы в моих знаниях. У меня есть функция getRecommendations, которая определяет, совпадает ли текущий домен пользователя (проанализированный с URL-адреса) с каким-либо в массиве под названием «домены». Если это так, мы хотим вызвать fetchRecommendations. Если совпадений нет, мы должны вернуться без вызова функции. Прямо сейчас fetchRecommendations вызывается независимо от текущего домена пользователя. Я немного озадачен. Это неуместный возврат? Мы неправильно называем fetchRecommendations? Благодарен за любое понимание.
В качестве примечания, мне было предложено, что проблема заключалась в «возврате». Но я пробовал разные места размещения, и код, похоже, сломался.
export const getRecommendations = url =>
browser.storage.local.get("domains").then(({ domains }) => {
const domain = parseDomain(url);
if (domains.includes(domain)) {
return fetchRecommendations(url);
}
else {
return;
}
});
export const fetchRecommendations = url =>
browser.storage.local.get("user").then(({ user }) =>
fetch(trestle.api.recommendations, {
method: "POST",
body: JSON.stringify({ currentUrl: url, emailAddress: user.username }),
headers: {
Authorization: `Bearer ${user.token}`,
Accept: "application/json",
"Content-Type": "application/json"
}
})
.then(response => response.json())
.then(recommendation => recommendation)
.catch(e => new Error("Unable to return recommendations for company"))
);
Думаю, именно здесь мы устанавливаем домены в хранилище:
export const getAnalyzedDomains = () =>
fetch(trestle.api.domains)
.then(response => response.json())
.then(domains =>
browser.storage.local.set({ domains }).then(() => domains)
);
Кроме того, вот функция parseDomain , импортировано из другого файла (этот файл импортирован из psl):
export const parseDomain = url => {
if (url === undefined || url === null) {
return "";
}
const protocol = url.indexOf("://");
url = url.substr(protocol + 3, url.length);
const pos = url.indexOf("/") === -1 ? url.length - 1 : url.indexOf("/");
const domain = url.substr(0, pos);
return parse(domain).domain || "";
};