• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

await nie czeka na wykonanie funkcji

0 głosów
327 wizyt
pytanie zadane 18 listopada 2019 w JavaScript przez Krzysztofson Użytkownik (620 p.)
zmienione kategorie 18 listopada 2019 przez Comandeer

Cześć mam problem z asynchronicznym wykonaniem kodu w node.js. Funkcja w kontrolerze nie czeka na zakończenie działania serwisu i zwraca pusty json, zanim nadejdzie wartość zwracana z serwisu.

kod Kontrollera

exports.trip = async (req, res, next) => {
    try {
        let result = await osrmService.trip(req.body.options);
        console.log(result) //result is undefined
        res.status(200).json({
            route: result
        });
    } catch (error) {
        next(error)
    }
}

kod Serwisu

exports.trip = (options, callback) => {
    osrm.trip(options, function(err, result) {
        if (err) throw err;
        //console.log(result)
        callback(result);
    });
}

Jak temu zaradzić? Czy jedyna opcja to zwrócić promise?

komentarz 18 listopada 2019 przez ScriptyChris Mędrzec (190,170 p.)

Funkcja trip przyjmuje 2 argumenty: options oraz callback. Ty przekazujesz tam tylko pierwszy jako req.body.options. Podejrzewam więc (abstrahując od braku Promisa), że w konsoli dla 5 linii powinien być błąd w stylu ReferenceError: callback is not defined.

1 odpowiedź

0 głosów
odpowiedź 18 listopada 2019 przez Comandeer Guru (608,480 p.)
Tak byłoby najsensowniej. W końcu skrypt musi wiedzieć, na co czekać.

Podobne pytania

0 głosów
1 odpowiedź 278 wizyt
pytanie zadane 24 grudnia 2022 w JavaScript przez rafaeru Początkujący (330 p.)
0 głosów
4 odpowiedzi 1,212 wizyt
pytanie zadane 5 marca 2019 w JavaScript przez PROFF Obywatel (1,180 p.)
+1 głos
2 odpowiedzi 1,331 wizyt
pytanie zadane 2 lipca 2021 w C# przez tomasz12345 Użytkownik (750 p.)

93,754 zapytań

142,714 odpowiedzi

323,359 komentarzy

63,348 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...