다음은 Javascript로 작성된 for 루프입니다. 그것은 websql에 대한 쿼리를 적용하려고합니다.자바 스크립트의 for 루프에서 마지막으로 실행 한 작업 만
for (var i = 0; i < 10; i++){
db.transaction(function (tx){
tx.executeSql('INSERT INTO ProjSetsT (ProjID) VALUES (?);', [i]);
});
}
시도는하기 표 I에 열 ProjSetsT ProjID에 값 "9 0, 1, 2, ..."를 추가하려고 명백하다. 작동하지 않습니다. 마지막 요소 인 '9'만 삽입되었지만 처음 8 개의 숫자는 삽입되지 않았습니다.
구문 오류가 있습니까?
구문 실수가 크게 실행이 안될 수 있기 때문입니다 : 비동기 컨텍스트를 제공,
을 호출된다 당신은 루프 내에서 작성하는 첫 번째 함수 전에 최대 크기에 도달 한 것입니다. .. WebSQL은 비동기 API이므로,이 방법으로 올바른 값을 캐치 할 수는 없습니다. [웹 SQL 데이터베이스 + 자바 스크립트 루프] (http://stackoverflow.com/questions/4825455/web-sql-database-javascript-loop)를 참조하십시오. 또한 하나의 트랜잭션에서 여러 쿼리를 실행하는 것이 더 빠르며 실제로 삽입 순서가 보장됩니다. 별도의 트랜잭션에서 각각을 실행하는 것은 임의의 순서로 모든 것을 느리게 수행 할 수 있습니다. – DCoderi
당신은 클로저를 사용하여 문제를 해결할 수하나의 검색어를 입력하지 않으시겠습니까? 여기서 바인드 된 값은 for 루프의 값으로 작성된 문자열입니다. –