Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环中的if语句起作用。但不是在我加上“以后”;“循环”/';重复';取来_Javascript_Loops_Date_If Statement_Fetch - Fatal编程技术网

Javascript 循环中的if语句起作用。但不是在我加上“以后”;“循环”/';重复';取来

Javascript 循环中的if语句起作用。但不是在我加上“以后”;“循环”/';重复';取来,javascript,loops,date,if-statement,fetch,Javascript,Loops,Date,If Statement,Fetch,我之前也提出过类似的问题,但不够简洁。 我来了 我正在从一个网站获取一些数据,一组对象,然后循环通过它来修改它。 我之所以修改它,完全是因为我需要数组中每个对象中的新元素,以便以后对它们运行一些“if语句” 我发现我的循环和if语句在没有fetch函数的情况下可以正常工作。但是,当我添加它时,应该返回true的if语句会执行相反的操作 示例代码位于底部 如果我按原样运行fetch(在获取对象的数据数组之后,我在没有fetch的情况下运行了代码,一切正常),那么这就是在fetch之外工作的部分 i

我之前也提出过类似的问题,但不够简洁。 我来了

我正在从一个网站获取一些数据,一组对象,然后循环通过它来修改它。 我之所以修改它,完全是因为我需要数组中每个对象中的新元素,以便以后对它们运行一些“if语句”

我发现我的循环和if语句在没有fetch函数的情况下可以正常工作。但是,当我添加它时,应该返回true的if语句会执行相反的操作

示例代码位于底部

如果我按原样运行fetch(在获取对象的数据数组之后,我在没有fetch的情况下运行了代码,一切正常),那么这就是在fetch之外工作的部分

if(时间<新日期(新日期(Date.now()).tolocalString('en-US',{时区:'UTC'))){
var time=new Date(new Date(Date.now()).tolocalString('en-US',{timeZone:'UTC'}))
//如果时间“较小”,则使用UTC中的当前时间更改时间
}否则{
//无所事事
}
for(设i=0;idata[i].estimatedtime){
//做点什么
}else{//如果条件为false,则重复获取
console.log('不合适!')
getData()
}
}
我试过做两个循环。 一个用于改变数据数组的对象,另一个用于if语句 +我对这两个单独的循环使用了asynch/await函数,以确保第二个循环(if语句)仅在第一个循环完成后启动。它似乎不起作用。 之前,我发布的错误是日期,显示的是“无效日期”。我解决了这个问题,但我仍然有同样的问题

var errorcheck = []
time = new Date('11/2/2019 14:25')

function getData() {
  fetch(fetch_url)
    .then((response) => {
      if (!response.ok) {
        errorcheck.push(response.status)
      } // if response is not ok, i store the error code.
      else if (response.ok) {
        response.json()
          .then(data => data = data)
          .then(() => {
            if (data.length > 0) { // checking if any "data array" has objects
              if (time < new Date(new Date(Date.now()).toLocaleString('en-US', { timeZone:'UTC'}))) {
                var time = new Date(new Date(Date.now()).toLocaleString('en-US', { timeZone:'UTC'}))
                //changing time with current time in UTC if time is "smaller"
              } else {
                //do nothing
              }

              for (let i = 0; i < data.length; i++) {
                data[i]['ontime'] = (new Date(new Date(data[i].starttime).toLocaleString('en-US', {timeZone: 'UTC'})))
                data[i]['estimatedtime'] = dateAdd(new Date(time), 'second', Math.round(data[i].distance.value / 50 * 60 * 60))

                for (let j = 0; j < data.rooms.length; j++) {
                  /*push and save some elements*/
                }

                if (data[i].ontime > data[i].estimatedtime) {
                  //do something
                } else { // repeat fetch if the condition is false
                  console.log('unsuitable!')
                  getData()
                }
              }
            } else {
              console.log('no object in data!')
              getData() //if data array had no objects inside, i repeat the fetch
            }
          })
      }
    })
}
var errorcheck=[]
时间=新日期('2019年11月2日14:25')
函数getData(){
获取(获取url)
。然后((响应)=>{
如果(!response.ok){
errorcheck.push(响应状态)
}//如果响应不正常,则存储错误代码。
else if(response.ok){
response.json()
.然后(数据=>数据=数据)
.然后(()=>{
如果(data.length>0){//检查任何“数据数组”是否有对象
如果(时间<新日期(新日期(Date.now()).toLocaleString('en-US',{时区:'UTC')))){
var time=新日期(新日期(Date.now()).toLocaleString('en-US',{时区:'UTC'))
//如果时间“较小”,则使用UTC中的当前时间更改时间
}否则{
//无所事事
}
for(设i=0;idata[i].estimatedtime){
//做点什么
}else{//如果条件为false,则重复获取
console.log('不合适!')
getData()
}
}
}否则{
console.log('数据中没有对象!')
getData()//如果数据数组中没有对象,则重复获取
}
})
}
})
}
更新: 我已经取出了下一个代码,它与fetch一起工作也很好

if (time < new Date(new Date(Date.now()).toLocaleString('en-US', { timeZone:'UTC'}))) {
                var time = new Date(new Date(Date.now()).toLocaleString('en-US', { timeZone:'UTC'}))
                //changing time with current time in UTC if time is "smaller"
              } else {
                //do nothing
              }
if(时间<新日期(新日期(Date.now()).toLocaleString('en-US',{时区:'UTC'))){
var time=新日期(新日期(Date.now()).toLocaleString('en-US',{时区:'UTC'))
//如果时间“较小”,则使用UTC中的当前时间更改时间
}否则{
//无所事事
}
每次运行fetch时都需要运行此代码。否则,时间戳(
estimatedtime
)将完全不相关。
我试着做了第二个
。然后在第一个和第二个之后也做了一个
<代码>时间
未更新。就像
time
(以及
estimatedtime
)一样,每次运行或完成提取时,我都需要修改其他变量。

我不能100%确定此处所需的逻辑,我只是在文档中添加一个元素,并附加一个事件,并在需要更多数据时触发它

我还创建了
myApp
来保存值,而不是多个全局变量

var myApp=myApp ||{
错误检查:[]
};
//这些可能在上面的对象中,就像错误检查一样
myApp.lastTimestamp=新日期();
myApp.fetch_url=“some/urlthing”;
myApp.time=new Date.UTC();
var anewdiveElement=document.createElement(“div”{
id:“newDivElement”
});
var getMoreDataEvent=新事件('getMoreData');
AnewDiveElement.addEventListener('getMoreData',函数(e){
myApp.getData();
},假);
document.body.appendChild(anewDiveElement);
var divHoldEvents=document.getElementById(“newDivElement”);
myApp.getData=函数(){
获取(myApp.fetch\u url)
.然后(功能(响应){
if(response.ok){
让data=response.json();
//检查是否有任何“数据数组”具有对象
如果(data.length>0){
myApp.myUtcDateTime=新日期.UTC();
if(myApp.time