我有一組從網頁上抓取的 URL,然后進行 API 呼叫以驗證 URL 以查看它們是否是惡意的。唯一的問題是我每天只能呼叫一定數量的 API,并且該陣列包含重復的 URL。我正在嘗試遍歷陣列并使用已保存的 API 呼叫來獲取重復值,并且我正在努力尋找最佳方法,因為可能存在多個重復項。如果回圈遇到重復值,我希望它不進行 API 呼叫,而只回傳先前 API 呼叫中已保存的值。我在下面的代碼中包含了一些基本的 sudo 代碼,但我不確定用什么來填充 sudo 代碼。
/* urlToValidate is a list of URLS */
urlToValidate = ["ups.com", "redfin.com", "ups.com", "redfin.com", "redfin.com", "redfin.com"];
var isValid = false;
/* API Overview https://www.ipqualityscore.com/documentation/malicious-url-scanner-api/overview */
for (let i = 0; i < urlToValidate.length; i ) {
if (i == 0 || Is Not A DUPLICATE) {
$.getJSON('https://ipqualityscore.com/api/json/url/<API_KEY>/' urlToValidate[i], function( json ) {
if (!json.phishing && !json.spamming && json.risk_score < 80) {
isValid = true;
returnMessage(isValid, json.risk_score, i)
} else {
isValid = false;
returnMessage(isValid, json.risk_score, i)
}
});
} else {
returnMessage(alreadySaved duplicateValue, alreadySaved duplicate risk_score, i)
}
}
Desired Output:
URL Valid: true Risk Rating: 0 Position: 7
or
Duplicate URL: true Risk Rating: 0 Position: 7
uj5u.com熱心網友回復:
這是一個簡單的快取問題。
在你的for回圈之外,維護某種 URL 到它們相應的獲取結果的映射。這樣,您不僅可以存盤該 URL 是否已被呼叫,還可以存盤結果(如果存在)。一種簡單的方法是使用基本物件,其中“鍵”是對應于 URL 的字串,“值”是獲取的結果。
const resultCache = {};
在回圈內部,在進行 fetch之前,您應該首先檢查快取是否已經有該 URL 的結果。
let result;
if (resultCache[urlToFetch]) {
result = resultCache[urlToFetch];
} else {
// use the previous result
result = await fetch(/* whatever */);
// remember to also store result in cache
resultCache[urlToFetch] = result;
}
uj5u.com熱心網友回復:
你有幾個選擇。
首先,您可以將您的 url 轉換為 aSet以防止發生任何重復。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set
另一種選擇是將回傳值存盤在一個物件中,鍵為 url,并在 if 陳述句中檢查值是否不為空。
*** 使用集合更新 ***
/* urlToValidate is a list of URLS */
urlToValidate = ["ups.com", "redfin.com", "ups.com", "redfin.com", "redfin.com", "redfin.com"];
var urls = new Set(urlToValidate);
var isValid = false;
/* API Overview https://www.ipqualityscore.com/documentation/malicious-url-scanner-api/overview */
for (let i = 0; i < urls.length; i ) {
$.getJSON('https://ipqualityscore.com/api/json/url/<API_KEY>/' urls[i], function( json ) {
if (!json.phishing && !json.spamming && json.risk_score < 80) {
isValid = true;
returnMessage(isValid, json.risk_score, i)
} else {
isValid = false;
returnMessage(isValid, json.risk_score, i)
}
});
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/468169.html
標籤:javascript 循环
上一篇:讀取檔案并做數學
下一篇:遍歷嵌套字典-Python
