[英]How can I optimize the if statements in this data feed function?
Is there a more efficient way to write the below if statements & preserve the exact same effect? 有没有更有效的方式编写以下if语句并保持完全相同的效果?
Let's say this dataRequest function runs from within in an interval that triggers it every 5 seconds. 假设此dataRequest函数在每5秒触发一次的间隔内运行。 There is fresh data in dataRequest each time it is requested.
每次请求时,dataRequest中都会有新数据。 As it exists right now, this code assigns a value to the latest data.item_1 - then (after each iteration) passes the value from the current result to a history variable before reassigning the current.
现在,此代码为最新数据分配一个值。item_1-然后(在每次迭代之后)将值从当前结果传递到历史记录变量,然后再重新分配当前值。 This creates a history of the results, up to 6.
这将创建结果的历史记录,最多6个。
It feels inefficient & redundant to do it like this, but I wasn't able to come up with another way. 这样做是感觉效率低下和多余的,但我无法提出另一种方法。 Seems unsustainable, esp if you have something like 100 history states...
似乎不可持续,尤其是如果您有类似100个历史状态的信息...
let result_current,
result_prev_1,
result_prev_2,
result_prev_3,
result_prev_4,
result_prev_5,
result_prev_6,
result_prev_7;
//
const dataRequest = function() {
let request;
request = new XMLHttpRequest();
request.open('GET', 'https://somedatafeed.com', true);
request.onload = function() {
if (request.status >= 200 && request.status < 400) {
data = JSON.parse(request.response)
// ...
if (result_prev_6) { result_prev_7 = result_prev_6; }
if (result_prev_5) { result_prev_6 = result_prev_5; }
if (result_prev_4) { result_prev_5 = result_prev_4; }
if (result_prev_3) { result_prev_4 = result_prev_3; }
if (result_prev_2) { result_prev_3 = result_prev_2; }
if (result_prev_1) { result_prev_2 = result_prev_1; }
if (result_current) { result_prev_1 = result_current; }
result_current = data.item_1.result;
} else {
// error
}
};
request.send();
}
Any thoughts? 有什么想法吗?
Add to an array instead. 而是添加到数组。
const resultArr = [];
const dataRequest = function() {
// ...
const data = JSON.parse(request.response);
resultArr.unshift(data.item_1.result); // or use push
}
// ...
Then you can access the most recent result via resultArr[0]
, and the older results in the other indicies. 然后,您可以通过
resultArr[0]
访问最新结果,而其他索引中的旧结果。
storing results in an array might be easier 将结果存储在数组中可能会更容易
let result = new Array(8);
//
const dataRequest = function() {
let request;
request = new XMLHttpRequest();
request.open('GET', 'https://somedatafeed.com', true);
request.onload = function() {
if (request.status >= 200 && request.status < 400) {
data = JSON.parse(request.response)
// ...
for(var i = result.length; i > 0; i--){
if(result[i]) { result[i] = result[i-1]}
}
result[0] = data.item_1.result;
} else {
// error
}
};
request.send();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.