我如何使它成为异步挂钩?
How do I make this an asynchronous hook?
如何让这个函数等待承诺在每个嵌套的 for 循环中解析,以便我可以为每个集合设置关系?练习名称打印在上下文日志之后。
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;
}
],
关系是:workout有很多练习,exercise有1个名字。
当迭代多个异步任务时Promise.all and Array.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;
}
如何让这个函数等待承诺在每个嵌套的 for 循环中解析,以便我可以为每个集合设置关系?练习名称打印在上下文日志之后。
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;
}
],
关系是:workout有很多练习,exercise有1个名字。
当迭代多个异步任务时Promise.all and Array.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;
}