Przede wszystkim JSON.parse
nie jest funkcja asynchroniczna. Tak więc, nie próbujcie promisify go.
Bo chcę stworzyć łańcuch obietnic gdzie JSON.parse stać na szczycie
Następnie wystarczy utworzyć obietnica rozwiązany z parsed obiekt JSON, podobnie jak to
Promise.resolve(JSON.parse(data))
.then(...)
teraz do rzeczywistego pytanie, otrzymujesz błąd,
Unhandled rejection Error: object
ponieważ, jeśli twój łańcuch obietnic zostanie odrzucony, nie będziesz go obsługiwać. Tak więc, nie zapomnij dołączyć obsługi catch, jak to
Promise.resolve(JSON.parse(data))
.then(...)
.catch(...)
przeczytać ten Istnieje problem z podejściem przedstawionym tutaj mam, jak podkreślił Bergi, w komentarzach. Jeśli wywołanie JSON.parse
nie powiedzie się, błąd zostanie wygenerowany synchronicznie i być może trzeba będzie napisać kod try...catch
wokół kodu Promise
. Zamiast tego można by napisać to jako Bergi zasugerowane w his answer, aby utworzyć obiekt Obietnica z tylko danymi, a następnie wykonać JSON.parse
w tym łańcuchu Obietnicy.
'JSON.parse' jest funkcją synchronizacji. Dlaczego chcesz * promisify * it? – thefourtheye
Ponieważ chcę stworzyć łańcuch obietnic, w których JSON.parse stoi na szczycie – Mazzy
@Mazzy: Skąd pochodzi twoje "dane"? Czy możesz pokazać nam swój pełny kod? Może być lepsze rozwiązanie. – Bergi