freeCodeCamp/curriculum/challenges/german/02-javascript-algorithms-an.../es6/complete-a-promise-with-res...

2.6 KiB

id title challengeType forumTopicId dashedName
5cdafbc32913098997531680 Vervollständige ein Promise mit resolve und reject 1 301196 complete-a-promise-with-resolve-and-reject

--description--

Ein Promise hat drei Zustände: pending, fulfilled und rejected. Das Promise, das du in der letzten Aufgabe erstellt hast, bleibt für immer im Zustand pending stecken, weil du keine Möglichkeit hinzugefügt hast, das Promise zu beenden. Dazu werden die Parameter resolve und reject verwendet, die dem Promise-Argument übergeben werden. resolve wird verwendet, wenn du willst, dass dein Promise erfolgreich ist, und reject wird verwendet, wenn es fehlschlagen soll. Das sind Methoden, die ein Argument benötigen, wie unten zu sehen.

const myPromise = new Promise((resolve, reject) => {
  if(condition here) {
    resolve("Promise was fulfilled");
  } else {
    reject("Promise was rejected");
  }
});

Das obige Beispiel verwendet Strings als Argument für diese Funktionen, aber es kann wirklich alles sein. Oft handelt es sich dabei um ein Objekt, dessen Daten du auf deiner Website oder an anderer Stelle verwendest.

--instructions--

Sorge dafür, dass das Promise mit Erfolg und Misserfolg umgeht. Wenn responseFromServer wahr (true) ist, rufe die Methode resolve auf, um das Promise erfolgreich abzuschließen. Übergib resolve einen String mit dem Wert We got the data. Wenn responseFromServer falsch (false) ist, verwende stattdessen die Methode reject und übergebe ihr den String: Data not received.

--hints--

resolve sollte mit dem erwarteten String aufgerufen werden, wenn die if-Bedingung true ist.

assert(
  code.match(/if\s*\(\s*responseFromServer\s*\)\s*{\s*resolve\s*\(\s*('|"|`)We got the data\1\s*\)(\s*|\s*;\s*)}/g)
);

reject sollte mit dem erwarteten String aufgerufen werden, wenn die if-Bedingung false ist.

assert(
  code.match(/}\s*else\s*{\s*reject\s*\(\s*('|"|`)Data not received\1\s*\)(\s*|\s*;\s*)}/g)
);

--seed--

--seed-contents--

const makeServerRequest = new Promise((resolve, reject) => {
  // responseFromServer represents a response from a server
  let responseFromServer;

  if(responseFromServer) {
    // Change this line
  } else {  
    // Change this line
  }
});

--solutions--

const makeServerRequest = new Promise((resolve, reject) => {
  // responseFromServer represents a response from a server
  let responseFromServer;

  if(responseFromServer) {
    resolve("We got the data");
  } else {  
    reject("Data not received");
  }
});