2017-06-29 3 views
-1

Diese meine Funktionen (vereinfacht) sind:Verkettete Versprechen Auflösung zu undefiniert?

fetchSth: (url) => {return fetch(url)} 

parseSth: (res, bot, editMsg) => res.text().then(res => { 
    return Promise.resolve(['aa', 'bb']); 
}) 

Das ist meine Kette:

reqs.fetchSth(url) 
    .catch(reqs.errInFetch) 
    .then((res) => reqs.parseSth(res, bot, editMsg) 
    .then(msg => console.dir(msg)) //prints undefined 
    ) 
     .then(msg => { 
     console.dir(msg); //prints undefined 
     }); 

Warum es zu undefinierten löst?

+1

Hinweis: Return ["aa", "bb"] ist genug ... –

+0

Bitte posten Sie die eigentlichen Funktionen. Dein vereinfachtes funktioniert. – Bergi

+0

oh entschuldigung. Es gab einen Fehler in meiner eigentlichen Funktion. Das Versprechen wurde nie zurückgegeben. reparierte es – arnab321

Antwort

0

Was wird von reqs.errInFetch zurückgegeben? Wenn es keinen weiteren Fehler auslöst oder ein abgelehntes Versprechen zurückgibt, wird die Kette mit der nächsten then Auflösung fortfahren. Das ist der erste Ort, an dem ich nachsehen würde. Wenn das das Problem ist, müssen Sie entscheiden, wie Sie einen Abruffehler behandeln möchten. Wenn es etwas ist, von dem sich Ihre Kette erholen kann, fügen Sie diese Logik in reqs.errInFetch ein. Andernfalls wird ein Fehler ausgegeben oder ein abgelehntes Versprechen zurückgegeben, das Sie am Ende der Kette fangen können.

+0

oh Entschuldigung. Es gab einen Fehler in meiner eigentlichen Funktion. Das Versprechen wurde nie zurückgegeben. behoben – arnab321

Verwandte Themen