2012-04-11 36 views
6

Używam pakietu async node.js, w szczególności dla EachSeries, do tworzenia serii żądań http na podstawie parametrów pochodzących z tablicy. W wywołaniu zwrotnym każdego żądania mam kilka instrukcji if/else, aby odpowiedzieć na różne typy odpowiedzi.Czy istnieje odpowiednik instrukcji "kontynuuj" podczas korzystania z pliku node.js async forEachSeries?

// This is the callback of a GET request inside of a forEachSeries 
function(error, response) { 
    if (response.results) { 
     // Do something with results 
    } 
    else if (!response.results) { 
     // Would like to use a continue statement here, but 
     // this is not inside of a loop 
    } 
    else { 
     // Do something else 
    } 
} 

Czy istnieje odpowiednik "kontynuuj", który można użyć w innym miejscu, jeśli jest powyżej? To nie jest technicznie wewnątrz pętli, więc kontynuuj nie działa.

+0

nie ma powodu, aby nie mieć dostępu do 'CONTINUE oświadczenie wewnątrz struktura kontrolna, jak 'if/else'. Co dokładnie próbujesz zrobić? Ponieważ wygląda na to, że musisz przejrzeć swoją logikę ... –

+0

Odpowiedź! Response.results jest najprawdopodobniej spowodowana ograniczeniem szybkości z serwera. Obecnie mogę zwrócić callback() na forEachSeries, że powyższe żądanie jest w środku, ale istnieje pewna potencjalna utrata danych w tym podejściu. Po prostu próbuje dowiedzieć się, czy istnieje odpowiednik kontynuować w forEachSeries w node.js. Coś podobnego do tego, jak zwracana jest prawda, używane jest w jQuery $ each. – TankofVines

Odpowiedz

5

Ponieważ jest to tylko funkcja powinna być w stanie return z niego mieć taki sam efekt:

else if (!response.results) { 
    return; 
} 
+0

Tak właśnie myślałem, chociaż powyższy kod jest trochę dziwny - instrukcja else nigdy nie zostanie trafiona, aw tym przypadku proste// byłoby wystarczające i prawdopodobnie nie wymagałoby przepływu typu "kontynuuj" kontrola. – Reid

+0

@Reid - Uzgodniono, chociaż może to mieć więcej sensu w większym fragmencie kodu, na przykład, jeśli istnieje inna gałąź kodu w ramach "else if". –

+0

@Justin - Dzięki za odpowiedź. To nie rozwiązało całkowicie mojego problemu, ale jest to najprostsze rozwiązanie tego problemu, więc przyjąłem. Powinienem opublikować większy fragment. – TankofVines