Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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 在继续之前,等待for循环中的当前循环完成_Javascript - Fatal编程技术网

Javascript 在继续之前,等待for循环中的当前循环完成

Javascript 在继续之前,等待for循环中的当前循环完成,javascript,Javascript,让javascript在下一次迭代之前等待for循环的当前迭代完成的最佳方法是什么 field1 BIGINT, -- ID field2 NVARCHAR(100), field3 NVARCHAR(150),

让javascript在下一次迭代之前等待for循环的当前迭代完成的最佳方法是什么

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
这是我的问题

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
目前,我正在从SQLite数据库中为for循环中的每个项运行一个SQLSELECT语句,如下所示

for(let i = 0; i < myresult.length; i++){
    var query = "SELECT * FROM table WHERE id = " + myresult[i].id;
    var result = //Run sql here    
    if(result.length == 0){ // if result doesn't exist, make it.
       var insertQuery = "INSERT INTO table";
    }
}
                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
for(设i=0;i
我的问题是,当它在循环中运行时,它会在select完成之前开始运行insert语句

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
比如说

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
//循环的第一次迭代

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
“从id=1的表格中选择*”

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
“在表(id)中插入值(1)”

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
//循环的第二次迭代

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
“从id=2的表格中选择*”

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
“在表(id)中插入值(1)”

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
它之所以这样做是因为它不会在开始下一个循环之前等待for循环的当前迭代完成

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 

如何使for循环在开始新循环之前等待当前循环完成?

如果在ms sql中使用存储过程,并使用ajax/angular在Javascript上以JSON绑定数据,效果会更好

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
声明@attreable表 (

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
插入@attreable (

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
选择t.field1

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
   t.field2,

   t.field3, 

   t.field4 
来自表1 t

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
声明@CountTable INT= (

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 
))

                                              field1 BIGINT, -- ID
                                              field2 NVARCHAR(100), 
                                              field3 NVARCHAR(150), 
                                              field4 NVARCHAR(150) 
                     );
          field1, 
          field2, 
          field3, 
          field4 
   ) 

如果(@CountTable SQL查询是异步的。它们可能有一些承诺或回调机制。Sync会阻止线程,而您不会有问题。您使用什么连接到SQL?浏览器或节点?这一行是如何执行的?
var result=//在此处运行SQL
…如果在完成之前没有阻止,例如f如果调用AJAX,您将遇到这样的问题。可能会使用?您省略了最重要的一行:var result=//在此处运行sql请显示您的代码。