Trong khi phát triển một ứng dụng PhoneGap trên điện thoại di động, tôi gặp phải một vấn đề thú vị. Tôi cần truy vấn khoảng 10 mục dữ liệu từ cơ sở dữ liệu (thông qua API API PhoneGaps) ... Giống như nhiều API javascript, điều này là không đồng bộ. Khi bạn thực hiện truy vấn của mình, bạn sẽ chuyển sang trình xử lý "thành công".Nhận hành vi đồng bộ trong javascript?
Bây giờ, tùy chọn của tôi trong trường hợp này sẽ là phương thức truy vấn đồng bộ chỉ trả lại khi hoàn tất. Sau đó, tôi có thể viết đoạn mã thẳng để truy vấn từng mục trong số 10 mục 1.
Do tính chất không đồng bộ của PhoneGap (thực sự, tôi thấy điều này trên khắp JS tuy nhiên) Tôi đã buộc phải viết một con thú trông như thế này:
db.query("SELECT...", success() {
db.query("SELECT...", success() {
db.query("SELECT...", success() {
db.query("SELECT...", success() {
db.query("SELECT...", success() {
}
}
}
}
}
Và đây chỉ là một nửa như sâu như tôi đã phải đi (và đơn giản hóa rất nhiều ...) ... Khi nào, có tôi đã sử dụng SQLite trong C, tôi có thể chỉ đơn giản là thực hiện một cái gì đó như:
db.query("SELECT...", resultA);
db.query("SELECT...", resultB);
db.query("SELECT...", resultC);
db.query("SELECT...", resultD);
db.query("SELECT...", resultE);
dường như với tôi rằng cách tiếp cận xử lý thành công là rất tốt khi bạn chỉ phải đi 1 hoặc 2 cấp độ sâu ... Nhưng, hoàn toàn sụp đổ khi bạn cần thêm tha n ...
Thư viện của họ, hoặc tính năng của thư viện ở đâu đó có thể làm việc này dễ dàng hơn không?
Thư viện thú vị. Thật tốt khi biết câu trả lời của tôi không phải là điên rồ, vì đó là mẫu mã cuối cùng bạn đang làm. +1 – cdeszaq