if(err){
                  
                  
                          console.log(error + '(' + number + ').', err);
                  
                  
                          done++;
                  
                  
                      }else{
                  
                  
                          console.log(done + '(' + number + ').', result,);
                  
                  
                          done++;
                  
                  
                      }
                  
                  
                  }
                  
                  
                  
                  
                  
                  function iter(){
                  
                  
                      start_time = new Date().getTime();
                  
                  
                      for(let i = 0; i < count; i++){
                  
                  
                          contract.methods.allPairs(i).call((err, result) => {
                  
                  
                              processed(result, err, i);
                  
                  
                          });
                  
                  
                      }
                  
                  
                  }
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  console.log('start!!!')
                  
                  
                  for(let i = 0;i < 1000;i++){
                  
                  
                      iter();
                  
                  
                      setTimeout(() => {console.log('NEXT ITERATION ', i)}, 1000);
                  
                  
                  }
                  
                  
                  сначала выводит все NEXT ITERATION 0...1000, а потом уже все done(0...100)?
                  
                  
                
contract.methods.allPairs асинхронная, да? В таком случае, iter возвращает не дожидаясь выполнения асинхронной операции и основной цикл вызывает setTimeout -- в результате все коллбэки setTimeout выполняются ~одновременно, а потом уже приходят результаты вызова iter
 🫀Ovцa00X
                          💰
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          🫀Ovцa00X
                          💰
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  А разве в таком случае не было бы что то типо NEXT ITERATION 1 NEXT ITERATION 2 done 1 Done 2 NEXT ITERATION 3 Done 3 NEXT ITERATION 4 Done 1 Done 2
Обсуждают сегодня