我最初不是写这篇文章的,所以我为我的知识空白感到抱歉。
我添加了以下代码块,以确定用户是否已导航到数组中包含的域之一。该数组定义为“域”。只有从Url解析的用户当前域匹配,才可以执行其余功能。 (我的加星标了)。
问题在于,即使用户处于“ if”状态,该函数仍将继续执行,而与用户所使用的网址无关。我知道这是因为无论我导航到哪个站点,都会触发推荐api。我不确定是放置问题还是语法不正确(或两者都不是);但我将不胜感激!
export const getRecommendations = url =>
**browser.storage.local.get("domains").then(({ domains }) => {
const domain = parseDomain(url);
if (!domains.includes(domain)) {
return
}
});**
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"))
);
答案 0 :(得分:1)
browser.storage.local.get
返回异步执行的Promise。包含return语句的函数在代码块的其余部分之后执行,并且不会对该代码块的其余部分的执行产生任何影响。您将需要将其余的块放在函数中,并将代码更改为
browser.storage.local.get("domains").then(({ domains }) => {
const domain = parseDomain(url);
if (domains.includes(domain)) {
callUrlFunction();
}
});