2013-03-26 27 views
5

tôi đã sử dụng sqlite, phonegap, javascript và i m cần tìm nạp thông tin từ db sqlite.sqlite đồng bộ

Tôi có thể tìm nạp tất cả thông tin tôi cần, chèn, cập nhật, v.v.

Vấn đề là javascript hoạt động không đồng bộ. Đó là nó đang xử lý tất cả các câu lệnh thành công khác trước khi tất cả các thông tin cần thiết từ cơ sở dữ liệu được tìm nạp.

tôi đã thử sử dụng gọi lại tất cả cùng và tôi mệt mỏi vì nó gặp khó khăn trong việc sử dụng vòng lặp. (không thể sử dụng truy vấn sqlite trong vòng lặp vì vòng lặp được lặp lại trước khi xử lý sqlquery hiện tại không phải là thứ tôi muốn)

có thể thực hiện các thao tác db này một cách đồng bộ không?

CẬP NHẬT Tìm thấy ra một giải pháp mới từ đây: webkit executesql sentence and loop problem

+0

Kiểm tra [caolan/async] (https://github.com/caolan/async) để giúp bạn quản lý các hoạt động không đồng bộ của bạn (chẳng hạn như thực hiện các phép toán không đồng bộ trong một chuỗi trong chuỗi). – Chad

+0

Bạn đã tìm ra cách sử dụng các hàm không đồng bộ bên trong một vòng lặp? Tôi có chính xác vấn đề đó hiện tại – kim366

+0

@ kim366 Những gì tôi đã kết thúc cuối cùng làm là loại bỏ các vòng lặp và thay đổi tất cả các chức năng cuộc gọi mà không phải là thanh lịch. Bạn có thể thử chức năng chờ mới trong javascript để trợ giúp bạn: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await Hoặc bạn có thể đọc bài viết này: https: // blog.lavrton.com/javascript-loops-how-to-handle-async-await-6252dd3c795 –

Trả lời

1

Không, nhưng có một thư viện có thể giúp ...

http://html5sql.com/

Tôi vừa mới bắt đầu sử dụng nó bản thân mình và nó cho phép bạn thực hiện nhiều hoặc một yêu cầu SQL, với 1 cuộc gọi lại. Có thể chỉ là những gì bạn cần :)

+0

thanx cho phản hồi nhanh của bạn. thư viện bạn tham chiếu là tốt nhưng không cho phép thực hiện các hoạt động async bên trong một vòng lặp trong một thời trang đồng bộ .. vì, tôi đang làm các truy vấn bên trong một vòng lặp, sử dụng các cuộc gọi lại không được khuyến khích. –

+0

Bạn không thể thực hiện cuộc gọi một cách đồng bộ. Nếu nó trong một vòng lặp thì bạn phải gọi một hàm gọi chính nó với mỗi lần gọi lại thực thi. – Archer

+0

oh .. thats những gì tôi hiện đang làm và hỏi câu hỏi này chỉ vì mã là đi quá lâu làm điều đó .. anyways, thanx rất nhiều .. –

1

Bạn có thể sử dụng Siminov Framework. Nó cho phép bạn thực hiện cả hai cuộc gọi Đồng bộ/Không đồng bộ với cơ sở dữ liệu SQLite gốc. Nó hỗ trợ hầu hết các Khung lai như (Cordova, React Native, Xamarin)

Tuy nhiên nếu bạn đang xây dựng một ứng dụng hybrid sử dụng JavaScript, sau đó tôi sẽ khuyên bạn nên sử dụng Asynchronous gọi bởi vì nó có một lợi thế thực hiện qua các cuộc gọi đồng bộ.

+0

liên kết về Siminov Framework là chết hoặc không thể truy cập –

Các vấn đề liên quan