提问人:mohciniya 提问时间:11/17/2023 最后编辑:Brian Tompsett - 汤莱恩mohciniya 更新时间:11/17/2023 访问量:39
如何计算异步中 interval1 > interval2 的次数
How to count the number of times that interval1 > interval2 in an asynchronous
问:
当 interval1 > interval2 时,将 interval1 的颜色更改为绿色!
我只想要一条消息,告诉我 interval1 > interval2 的数量。我不知道该怎么做?
async function fetchCryptoData(symbol) {
try {
const response = await fetch(
`https://api.binance.com/api/v3/klines?symbol=${symbol}USDT&interval=5m&limit=2`
);
const data = await response.json();
// Mise à jour du tableau avec les données et la couleur
const cryptoRow = document.getElementById(symbol);
// Comparaison des intervalles
const interval1 = parseFloat(data[0][4]) - parseFloat(data[0][1]);
const interval2 = parseFloat(data[1][4]) - parseFloat(data[1][1]);
// Vérification si interval1 est strictement plus grand que les autres intervalles
const isMaxInterval = interval1 > interval2;
// Initializsation de count pour interval1 > interval2
let countIntervalGreaterThan = 0;
for (let i = 0; i < data.length; i++) {
const openPrice = parseFloat(data[i][1]);
const closePrice = parseFloat(data[i][4]);
const intervalVariation = ((closePrice - openPrice) / openPrice) * 100;
const cellIndex = i + 1; // Décalage d'une cellule pour éviter la première cellule (Crypto)
const variationCell = cryptoRow.insertCell(cellIndex);
const variationValue = intervalVariation.toFixed(2);
const timestamp = parseInt(data[i][0]);
const dateValue = new Date(timestamp);
const hour = dateValue.getHours();
const minute = dateValue.getMinutes();
const formattedTime = `${hour.toString().padStart(2, "0")}:${minute
.toString()
.padStart(2, "0")}`;
variationCell.textContent = `${formattedTime}: ${variationValue}%`;
// Ajout de la classe 'positive' uniquement si interval1 est strictement plus grand que les autres intervalles
if (i === 0 && isMaxInterval && interval1 !== 0) {
variationCell.classList.add('positive');
// Increment le compte si interval1 > interval2
countIntervalGreaterThan++;
}
}
// Affichage du count après la boucle
console.log(`Number of times interval1 > interval2: ${countIntervalGreaterThan}`);
} catch (error) {
console.error(
`Erreur lors de la récupération des données pour ${symbol}:`,
error
);
}
}
fetchCryptoData("1INCH");
fetchCryptoData("AAVE");
fetchCryptoData("ACH");
fetchCryptoData("ADA");
fetchCryptoData("AGIX");
fetchCryptoData("AGLD");
....
为什么我有几行而不是一行将总数相加?
答:
0赞
adsy
11/17/2023
#1
仅仅因为被多次调用,而你在里面。fetchCryptoData
console.log
fetchCryptoData
这也意味着您的变量实际上是单个调用结果的值,而不是所有结果的值。countIntervalGreaterThan
最好返回每个调用的计数(小计),然后等待所有调用并将它们相加(总计)。fetchCryptoData
async function fetchCryptoData(symbol) {
try {
const response = await fetch(
`https://api.binance.com/api/v3/klines?symbol=${symbol}USDT&interval=5m&limit=2`
);
const data = await response.json();
// Mise à jour du tableau avec les données et la couleur
const cryptoRow = document.getElementById(symbol);
// Comparaison des intervalles
const interval1 = parseFloat(data[0][4]) - parseFloat(data[0][1]);
const interval2 = parseFloat(data[1][4]) - parseFloat(data[1][1]);
// Vérification si interval1 est strictement plus grand que les autres intervalles
const isMaxInterval = interval1 > interval2;
// Initializsation de count pour interval1 > interval2
let countIntervalGreaterThan = 0;
for (let i = 0; i < data.length; i++) {
const openPrice = parseFloat(data[i][1]);
const closePrice = parseFloat(data[i][4]);
const intervalVariation = ((closePrice - openPrice) / openPrice) * 100;
const cellIndex = i + 1; // Décalage d'une cellule pour éviter la première cellule (Crypto)
const variationCell = cryptoRow.insertCell(cellIndex);
const variationValue = intervalVariation.toFixed(2);
const timestamp = parseInt(data[i][0]);
const dateValue = new Date(timestamp);
const hour = dateValue.getHours();
const minute = dateValue.getMinutes();
const formattedTime = `${hour.toString().padStart(2, "0")}:${minute
.toString()
.padStart(2, "0")}`;
variationCell.textContent = `${formattedTime}: ${variationValue}%`;
// Ajout de la classe 'positive' uniquement si interval1 est strictement plus grand que les autres intervalles
if (i === 0 && isMaxInterval && interval1 !== 0) {
variationCell.classList.add('positive');
// Increment le compte si interval1 > interval2
countIntervalGreaterThan++;
}
}
return { countIntervalGreaterThan }
} catch (error) {
console.error(
`Erreur lors de la récupération des données pour ${symbol}:`,
error
);
}
}
Promise.all([
fetchCryptoData("1INCH"),
fetchCryptoData("AAVE"),
fetchCryptoData("ACH"),
fetchCryptoData("ADA"),
fetchCryptoData("AGIX"),
fetchCryptoData("AGLD"),
// ... etc
]).then((values) => {
const total = values.reduce((accumulator, value) => {
return accumulator + value.countIntervalGreaterThan
}, 0)
// Affichage du count après la boucle
console.log(`Number of times interval1 > interval2: ${total}`);
});
评论