Создать 2 функции, которые будут взаимодействовать
-Создать функцию getUsers с аргументом name пользователя.
В функции есть массив
Users = [ {id: 1, name: 'Bill'}, {id: 2, name: 'John'}, {id: 3, name: 'Bob'}, {id: 4, name: 'Jenny'} ];Функция getUsers возвращает промис в resolve с объектом найденного пользователя (Например getUsers('Bill') в resolve передаем {id: 1, name: 'Bill'}) если пользователь с таким именем не найден тогда reject('User not found')
-Создать функцию getTodos с аргументом id пользователя и которая возвращает промис в resolve все найденные Todos привязанные к этому пользователю
В функции есть массив
const Todos = [ {uid: 1, title: 'todo1'}, {uid: 2, title: 'todo2'}, {uid: 3, title: 'todo3'}, {uid: 4, title: 'todo4'}, {uid: 1, title: 'todo5'}, {uid: 3, title: 'todo6'}, {uid: 2, title: 'todo7'}, {uid: 2, title: 'todo8'}, {uid: 4, title: 'todo9'}, {uid: 1, title: 'todo10'} ];
-- На первом then getUsers вызываем getTodos в который и передаем id пользователя который получили от промиса getUsers чтобы после получить все Todos привязанные к этому пользователю
- Вывести результат в консоль (resolve все отфильтрованные Todos или reject User not found) (реализация должна быть промис в котором есть другой возвращаемый промис)
Я не знаю как в then связать эти 2 функции
function getUsers(name) {
return new Promise(function (res, rej) {
setTimeout(() => {
if (name) {
const Users = [
{ id: 1, name: 'Bill' },
{ id: 2, name: 'John' },
{ id: 3, name: 'Bob' },
{ id: 4, name: 'Jenny' }
];
res(Users)
}
else {
rej('Incorrect API key')
}
}, 2000)
})
}
function getTodos(id) {
return new Promise(function (res, rej) {
setTimeout(() => {
if (id) {
const Todos = [
{ uid: 1, title: 'todo1' },
{ uid: 2, title: 'todo2' },
{ uid: 3, title: 'todo3' },
{ uid: 4, title: 'todo4' },
{ uid: 1, title: 'todo5' },
{ uid: 3, title: 'todo6' },
{ uid: 2, title: 'todo7' },
{ uid: 2, title: 'todo8' },
{ uid: 4, title: 'todo9' },
{ uid: 1, title: 'todo10' }
];
res(Todos)
}
else {
rej('Incorrect API key')
}
}, 2000)
})
}
getUsers(name).then(
getTodos((id) => { name.id })
)
Ответы (1 шт):
Такая работа с промисами для меня в первое, было просто интересно попробовать.
Но я такие вопросы не поддерживаю, т.к. вы толком не показали своих попыток, смысл всего этого?
function getUsers(name)
{
if (!name)
{
return Promise.reject('Incorrect API key');
}
const Users =
[
{ id: 1, name: 'Bill' },
{ id: 2, name: 'John' },
{ id: 3, name: 'Bob' },
{ id: 4, name: 'Jenny' }
];
const user = Users.find((user) => user.name == name);
if (user == undefined)
{
return Promise.reject('User not found');
}
else
{
return Promise.resolve(user);
}
}
function getTodos(id)
{
if (!id)
{
return Promise.reject('Incorrect API key');
}
const Todos =
[
{ uid: 1, title: 'todo1' },
{ uid: 2, title: 'todo2' },
{ uid: 3, title: 'todo3' },
{ uid: 4, title: 'todo4' },
{ uid: 1, title: 'todo5' },
{ uid: 3, title: 'todo6' },
{ uid: 2, title: 'todo7' },
{ uid: 2, title: 'todo8' },
{ uid: 4, title: 'todo9' },
{ uid: 1, title: 'todo10' }
];
const userTodos = Todos.filter((todo) => todo.uid == id);
return Promise.resolve(userTodos);
}
getUsers('Bill')
.then(({id}) =>
{
getTodos(id)
.then((todos) =>
{
console.log(todos);
});
})
.catch((message) =>
{
console.log(message);
});