--- id: 5cdafbc32913098997531680 title: Complete a Promise with resolve and reject challengeType: 1 forumTopicId: 301196 --- ## Description
A promise has three states: pending, fulfilled, and rejected. The promise you created in the last challenge is forever stuck in the pending state because you did not add a way to complete the promise. The resolve and reject parameters given to the promise argument are used to do this. resolve is used when you want your promise to succeed, and reject is used when you want it to fail. These are methods that take an argument, as seen below. ```js const myPromise = new Promise((resolve, reject) => { if(condition here) { resolve("Promise was fulfilled"); } else { reject("Promise was rejected"); } }); ``` The example above uses strings for the argument of these functions, but it can really be anything. Often, it might be an object, that you would use data from, to put on your website or elsewhere.
## Instructions
Make the promise handle success and failure. If responseFromServer is true, call the resolve method to successfully complete the promise. Pass resolve a string with the value We got the data. If responseFromServer is false, use the reject method instead and pass it the string: Data not received.
## Tests
```yml tests: - text: resolve should be executed when the if condition is true. testString: assert(removeJSComments(code).match(/if\s*\(\s*responseFromServer\s*\)\s*{\s*resolve\s*\(\s*('|"|`)We got the data\1\s*\)(\s*|\s*;\s*)}/g)); - text: reject should be executed when the if condition is false. testString: assert(removeJSComments(code).match(/}\s*else\s*{\s*reject\s*\(\s*('|"|`)Data not received\1\s*\)(\s*|\s*;\s*)}/g)); ```
## Challenge Seed
```js const makeServerRequest = new Promise((resolve, reject) => { // responseFromServer represents a response from a server let responseFromServer; if(responseFromServer) { // change this line } else { // change this line } }); ```
### After Test
```js const removeJSComments = str => str.replace(/\/\*[\s\S]*?\*\/|\/\/.*$/gm, ''); ```
## Solution
```js 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"); } }); ```