Синхронизировать обещания - PullRequest
0 голосов
/ 24 июня 2019

Привет, у меня есть следующая функция, которая возвращает Обещание

test = (users, PaginationToken) => {
    return new Promise((resolve, reject) => {
        fetchAllAwsUsers(undefined, true, PaginationToken)
            .then(u => {

                const roles = u.users.roles;
                const tempUsers = u.users.splice(u.users.roles);
                users = users.concat(tempUsers);
                users.roles = roles;

                // users = users.concat(u).concat(u.users.roles);

                if (u.PaginationToken !== undefined){
                    this.test(users,u.PaginationToken)
                    console.log("rufe nochmal auf", u);

                } else {
                    console.log("///////////////",users);

                    resolve(users);
                }
            })
            .catch(err => {
                reject(err);
            });
    });
};

Я вызываю эту функцию в моем componentDidMount () в моем приложении ReactionJS

componentDidMount() {
    this.test([], null)
        .then(result => {
            console.log("THEN")
            const userUuid = sessionStorage.getItem('username');
            const currentRole = getUserRoles(result.users, userUuid).defaultRole;

            console.log("currentRole",currentRole);

            const roles = result.roles;
            const hasAdmin = roles.some(role => {
                return isAdminOrDeveloperOrJiRole(role.roleUuid, result.users, true);
            });

            console.log("------RESULT",result);

            this.setState({
                clientId: parseInt(sessionStorage.getItem('client')),
                users: result,
                currentRole: currentRole,
                userPermissions: getUserPermissions(result.users, userUuid),
                rolePermissions: getUserPermissions(result.users, currentRole),
                customer: isCustomer(result.users, currentRole),
                admin: isAdminOrDeveloperOrJiRole(currentRole, result.users, true),
                hasAdmin: hasAdmin,
                loaded: true,
            }, () => {
                // this.generateSearchableUsers();
                // this.fetchAllUsers(this.state.clientId);
                // this.fetchAllUsersWithoutFilter();
                console.log("--------------------------------------",this.state)
            });
        })
        .catch(error => {
            console.error(error);
        });

Мне нужны обещания, потому чтоЯ звоню в AWS cognito API и выбираю пользователей оттуда.У них есть ограничение на выборку только 60 элементов за вызов, поэтому я должен выполнить итерацию и повторить вызов.

Как мне синхронизировать это?

Мой Resultset содержит только данные из первоговызов, а не вещи из рекурсивных вызовов.

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...