Передача параметра в promise

233
24 августа 2017, 23:05

Хочу передать в promise параметр с другого файла. Но из-за асинхроности (как мне кажется) выдаёт неверный ответ.

var promise_get_permissions = function (user_id_current) {
return new Promise(function (resolve, reject) {
        console.log(user_id_current);
        var result_array = [];
        connection.UserRoles
            .findAndCountAll({
                where: {
                    userId: user_id_current
                }
            })
            .then(function (result) {
                var role_id_current;
                for (var i = result.count - 1; i >= 0; i--) {
                    role_id_current = result.rows[i].dataValues["roleId"];
                    connection.RolePermissions
                        .findAndCountAll({
                            where: {
                                roleId: role_id_current
                            }
                        })
                        .then(function (result) {
                            var permission_id_current;
                            //console.log("permissions result:", result);
                            for (var i = result.count - 1; i >= 0; i--) {
                                permission_id_current = result.rows[i].dataValues["permissionId"];
                                connection.Permissions
                                    .findById(permission_id_current)
                                    .then(function (result) {
                                        result_array.push(result.dataValues["code"]);
                                    })
                            }
                        })
                        .then(function () {
                            unique(result_array);
                        });
                }
            })
            .then(function () {
                unique(result_array);
                resolve(result_array);
            })
});
};

Вызываю код, который выше, здесь:

func_auth.promise_get_permissions(request.user)
    .then(function (result) {
        console.log(result);
        for (var i = result.length - 1; i >= 0; i--) {
            get_permissions_array[result[i]] = true;
            // console.log(get_permissions_array[result[i]]);
        }
        console.log(get_permissions_array);
    })
    .then(function(){
        response.render("main.hbs",{
            is_auth_visible: request.isAuthenticated(),
            get_permissions: get_permissions_array
        });
    })

но в итоге result пустой, а в нём должны бытьcodeы Укажите на ошибку или предложите альтернативный вариант. Заранее спасибо!

И еще вопрос! Можно ли заставить ждать пока сработают все thenы?

READ ALSO
Задать структуру в json

Задать структуру в json

Хочу задать такую структуру хранения в json

220
Vue.js - Плавное изменение высоты, при удалении/добавлении DOM

Vue.js - Плавное изменение высоты, при удалении/добавлении DOM

Как в Vue анимировать изменение высоты, когда удаляется или добавляется DOM элемент внутри определенного блока?

286