3.2 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
5cdafbc32913098997531680 | Виконайте Promise за допомогою команд resolve та reject | 1 | 301196 | complete-a-promise-with-resolve-and-reject |
--description--
Promise має три стани: pending
, fulfilled
та rejected
. Promise, який ви створили у попередньому завданні, буде завжди знаходитися у стані pending
, оскільки ви не передбачили можливості завершити Promise. Для цього використовуються параметри resolve
і reject
, що належать аргументу Promise. resolve
використовується для виконання Promise, а reject
використовується для відхилення Promise. При таких методах з'являється аргумент, як показано нижче.
const myPromise = new Promise((resolve, reject) => {
if(condition here) {
resolve("Promise was fulfilled");
} else {
reject("Promise was rejected");
}
});
Попередній приклад використовує рядки для аргументу цих функцій, але можливі й інші варіанти. Часто це може також бути об'єкт, дані якого ви використаєте для розміщення на своєму сайті чи в іншому місці.
--instructions--
Запрограмуйте Promise так, щоб він самостійно обробляв виконання або відхилення. Якщо responseFromServer
виявляється true
, викличте метод resolve
, щоб успішно виконати Promise. Додайте до resolve
рядок зі значенням We got the data
. Якщо responseFromServer
виявляється false
, використайте метод reject
і додайте рядок Data not received
.
--hints--
resolve
має викликатися за допомогою очікуваного рядка, а значення if
має бути true
.
assert(
code.match(/if\s*\(\s*responseFromServer\s*\)\s*{\s*resolve\s*\(\s*('|"|`)We got the data\1\s*\)(\s*|\s*;\s*)}/g)
);
reject
має викликатися за допомогою очікуваного рядка, а значення if
має бути false
.
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");
}
});