2016-08-04 11 views
0

Ich war nicht in der Lage, meinen Verstand Versprechen zu bekommen.Wie man das Versprechen zurückgibt

Ich habe diese Funktion:

response(theResponse) { 
    return theResponse.json(); 
} 

theReponse.json() ist Code, der ein Versprechen zurückgibt.

Dies funktioniert und gibt eine Zusage zurück, die in ein Array aufgelöst wird.

Allerdings muss ich dies ändern, damit ich Zugriff auf das Array erhalten kann, und dann das Array verarbeiten, und dann es in einem Versprechen zurückgeben.

Wie mache ich das?

+1

Ihr Argument ist derselbe Name wie die Funktion. Das sieht mir nicht gut aus. –

+1

Ich sehe keine Versprechen in Ihrer Frage. Möchten Sie das erklären? – 4castle

+1

'return theResponse.json(). Dann (arr => ...);' – zerkms

Antwort

1

wenn dass json() Methode Renditen versprechen komponieren, dann können Sie then()

response(theResponse) { 
    return theResponse.json().then(function(arr) { 
     //do something with arr 
     return arr; 
    }); // then() returns new promise so it can be chained 
} 

Check "Versprechen Chaining" here verwenden.

+0

Danke, das funktioniert. –

1

Sie können versprechen Pipelines mit Promise#then()

function response(theResponse) { 
    return theResponse.json().then(function(array) { 
    // process array 
    return array; 
    }); 
} 
1

Nur um die anderen Antworten hinzuzufügen, sollten Sie immer Ihre Versprechen halten, damit Fehler nicht "geschluckt" werden.

response(theResponse) { 
    return theResponse 
      .json() 
      .then(arr => arr) // handle resolve 
      .catch(err => err); // handle reject 
} 
Verwandte Themen