是否有更有效的方法来编写以下if语句&保持完全相同的效果?
让我们说这个dataRequest函数在每隔5秒触发一次的间隔内从内部运行。 每次请求时,dataRequest中都有新数据。 由于它现在存在,此代码为最新data.item_1分配一个值 - 然后(在每次迭代之后)将值从当前结果传递给历史变量,然后重新分配当前值。这会创建结果的历史记录,最多6个。
感觉效率低下&多余这样做,但我无法想出另一种方式。似乎不可持续,尤其是如果你有100个历史状态......
int main(){
int fd, sd, num=0, sret, fret, maxfd;
//fd_set readfds;
//struct timeval timeout;
if(mkfifo("atm1", 0666) == -1){...}
if(mkfifo("atm2", 0666) == -1){...}
if((fd = open("atm1", O_RDONLY)) == -1){...}
if((sd = open("atm2", O_RDONLY)) == -1){...}
while(1){
if((sret = read(sd, &num, sizeof(num))) > 0){
printf("%d\n", num);
}
if((fret = read(fd, &num, sizeof(num))) > 0){
printf("%d\n", num);
}
if(sret <= 0 && fret <= 0){
break;
}
}
close(fd);
close(sd);
return 0;
}
有什么想法吗?
答案 0 :(得分:3)
改为添加到数组中。
const resultArr = [];
const dataRequest = function() {
// ...
const data = JSON.parse(request.response);
resultArr.unshift(data.item_1.result); // or use push
}
// ...
然后,您可以通过resultArr[0]
访问最新的结果,而较旧的结果会显示在其他标记中。
答案 1 :(得分:0)
将结果存储在数组中可能更容易
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();
}