2015-05-11 44 views
6

Używam PouchDB po stronie klienta (jonowa aplikacja mobilna) couchdb po stronie serwera.Jak czekać, aż PouchDB pomyślnie połączy

Muszę wykonać operację po pomyślnym utworzeniu i synchronizacji pouchdb z couchdb.

, więc jak mogę poczekać, aż pouchdb zakończy pierwszą czynność. Następnie po uruchomieniu powinna rozpocząć się tylko moja strona klienta.

obecnie etui pracuje na sposób asynchroniczny, więc kiedyś zanim torebka zainicjować mój wniosek rozpoczyna wykonywanie i otrzymuję błąd dla pouchdb.

+0

masz spróbował wykorzystać .Następnie. więc powiedzmy, że masz $ scope.connect = function() { var req = {options}; $ http (req) .success (wywołanie zwrotne) .error (wywołanie zwrotne). Then (wywołanie zwrotne) } Funkcja wywołania zwrotnego .then nie zostanie uruchomiona, dopóki wszystkie dane nie powiodą się pomyślnie i nie zakończy się powodzenie i błąd. Sprawdź to, aby uzyskać więcej informacji http://www.peterbe.com/plog/promises-with-$http –

+0

Dzięki jess, okay, a następnie muszę umieścić cały kod, a następnie bloku, który chcę wykonać po połączeniu pouchdb. dobrze? –

+0

tak, powinien działać. Oto przykład. db.get ("mitenki"). Then (function (doc) { // okay, dokument zawiera nasz dokument }). Catch (funkcja (err) { // oh noes, mamy błąd }) ; –

Odpowiedz

1

Podczas pracy z funkcjami asynchronicznymi, takimi jak oczekiwanie na odpowiedź z serwera w kodzie JavaScript, można użyć obietnic lub wywołań zwrotnych, aby poczekać na odpowiedź.

z pouchdb docs możemy przeczytać, że zapewniają w pełni asynchroniczny interfejs API.

oddzwaniania wersja:

db.get('mittens', function (error, doc) { 
    if (error) { 
    // oh noes! we got an error 
    } else { 
    // okay, doc contains our document 
    } 
}); 

Obietnica wersja:

db.get('mittens').then(function (doc) { 
    // okay, doc contains our document 
}).catch(function (err) { 
    // oh noes! we got an error 
});