如何使这个异步钩子?

时间:2018-05-10 10:19:38

标签: feathersjs

如何使此函数等待每个嵌套for循环中的promise的解析,以便我可以为每个集合设置关系?在上下文日志之后打印练习名称。

        find: [
            function (context) {
                context.result.data.forEach((workout) => {
                    workout.exercises.forEach((exercise) => {
                        context.app.service('exercises').get(exercise.exerciseId).then((data) => {
                            exercise.name = data.name;
                        });
                    });
                });

                console.log(context.result.data[0]);

                context.dispatch = context.result;
                return context;
            }
        ],

关系是:锻炼有很多练习,锻炼有1个名字。

1 个答案:

答案 0 :(得分:1)

当迭代多个异步任务Promise.allArray.map是你的朋友时:

async function (context) {
    await Promise.all(context.result.data.map((workout) => {
        return Promise.all(workout.exercises.map((exercise) => {
            return context.app.service('exercises').get(exercise.exerciseId).then((data) => {
                exercise.name = data.name;
            });
        });
    });

    console.log(context.result.data[0]);

    context.dispatch = context.result;
    return context;
}