sqlite синхронен

Използвах sqlite, phonegap, javascript и имам нужда от извличане на информация от sqlite db.

Мога да извлека цялата информация, от която се нуждая, да вмъквам, актуализирам и т.н.

Проблемът е, че javascript работи асинхронно. Това означава, че обработва всички други следващи изрази, преди цялата необходима информация от базата данни да бъде извлечена.

Опитвал съм да използвам обратни извиквания през цялото време и съм уморен от това, тъй като има трудности при използването на цикли. (не мога да използвам sqlite заявки в рамките на цикли, тъй като цикълът се повтаря, преди текущата sqlquery да бъде обработена, което не е това, което искам)

възможно ли е тези db операции да се извършват синхронно?

АКТУАЛИЗАЦИЯ Открих ново решение от тук: webkit изпълнява изречение и проблем с цикъл


person Vignesh T.V.    schedule 26.03.2013    source източник
comment
Вижте caolan/async, за да ви помогне да управлявате вашите асинхронни операции (като например извършване на асинхронни операции в цикъл в серия).   -  person Chad    schedule 26.03.2013
comment
Разбрахте ли как да използвате асинхронни функции в цикъл? В момента имам точно този проблем   -  person Post Self    schedule 24.02.2018
comment
@kim366 Това, което най-накрая направих, е да премахна цикли и да променя всичко на извиквания на функции, което не беше елегантно. Можете да опитате новата функция за изчакване в javascript, за да ви помогне: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ Или можете да прочетете тази статия: blog.lavrton.com/   -  person Vignesh T.V.    schedule 24.02.2018
comment
@VigneshT.V. Да, това се опитвам да направя. Преминах на sqlite (от sqlite3), който използва обещания. Все още се опитвам да го накарам да работи, но изглежда обещаващо; игра на думи не е предназначена.   -  person Post Self    schedule 24.02.2018
comment
Най-накрая проработи! С await можете просто да направите асинхронните неща синхронни и да не ви боли главата с всичко това   -  person Post Self    schedule 25.02.2018


Отговори (2)


Не, но има библиотека, която може да помогне...

http://html5sql.com/

Аз току-що започнах да го използвам и ви позволява да изпълнявате множество или единични SQL заявки с 1 обратно извикване. Може да е точно това, от което се нуждаете :)

person Reinstate Monica Cellio    schedule 26.03.2013
comment
Благодаря за бързия ви отговор. библиотеката, която посочихте, е добра, но не позволява извършването на асинхронни операции вътре в цикъл по синхронен начин.. тъй като правя заявките вътре в цикъл, използването на обратни повиквания не е препоръчително. - person Vignesh T.V.; 26.03.2013
comment
Не можете да извършите повикването синхронно. Ако е в цикъл, тогава трябва да извикате функция, която се извиква сама при всяко изпълнение на обратно извикване. - person Reinstate Monica Cellio; 26.03.2013
comment
о .. това е, което правя в момента и зададох този въпрос само защото кодът се забави твърде много, докато го правя .. както и да е, благодаря много .. - person Vignesh T.V.; 26.03.2013
comment
Няма проблем. Малко ме дразни, че не е синхронно повикване, но в днешно време всичко е асинхронно, нали :) - person Reinstate Monica Cellio; 26.03.2013

Можете да използвате Siminov Framework. Позволява ви да правите както синхронни, така и асинхронни извиквания към родната база данни SQLite. Поддържа повечето от хибридните рамки като (Cordova, React Native, Xamarin)

Въпреки това, ако изграждате хибридни приложения с помощта на JavaScript, тогава бих препоръчал да използвате асинхронни повиквания, защото има предимство в производителността пред синхронните повиквания.

person Simply Innovative    schedule 04.07.2013