Как заставить скрипт дождаться выполнения асинхронной операции? 
		
		
		
		Всем привет. 
	Есть в скрипте асинхронная операция, которая выглядит так: 
var db = openDatabase("stor", "1.0", "stor data");
		db.transaction(function(tx) {
			tx.executeSql(
				"CREATE TABLE IF NOT EXISTS `stor` (`key` TEXT, `data` BLOB, unique(`key`))",
				[],
				function(tx, result){
					tx.executeSql('SELECT * FROM `stor`', [], function (tx, results){
					  var len = results.rows.length, i;
					  for (i = 0; i < len; i++) {
						storage[results.rows.item(i).key] = results.rows.item(i).data;
					  }
					});
					
				},
				function(tx, error){
					
				}
			);
		});
Ниже идёт проверка наличия элементов в массиве, но когда она запускается, цикл ещё не закончен, и соответственно, идёт потеря элементов, весь остальной код даёт сбои. Как "застопорить" скрипт, пока цикл не будет пройден?  | 
	
		
 1. Вариант - оформить проверку элементов в функцию и запускать ее - сразу после цикла. 
	2. Вариант после цикла запускать событие. Гдето в коде отлавливать это событие и запускать проверку элементов.  | 
	
		
 Короче, определять перед проверкой окончание цикла. Пробовал, не подходит. 
	Дело в том, что проверка - это только начало, ниже будет очень много кода (заранее неизвестно, какого и сколько), включая инлайновые скрипты, и весь код зависит от результатов этой операции и результатов проверки. То есть, весь последующий javascript просто нереально запихать в условие или в обработчик.  | 
	
		
 Цитата: 
	
 Цитата: 
	
  | 
	
		
 Правильно - как? 
	 | 
	
		
 Вопрос сложный и однозначного ответа нет. Для начала вам похоже стоит более подробно разобраться как работают асинхронные вызовы. Почитать про нюансы программирования в асинхронном стиле. Вобщем как делать все правильно - сказать очень сложно, зато когда неправильно увидеть проще. Вероятно что сейчас вы идете не совсем верным путем - останавливать работу приложения и ждать ответа от асинхронного вызова - не javascript - way, если можно так выразиться. Вообще можно решить вашу задачу с помощью хаков - но в будущем это может обернуться гораздо большими проблемами. 
	 | 
| Часовой пояс GMT +3, время: 08:44. |