1 回答

TA贡献1898条经验 获得超8个赞
const testIt = (subjectsArray)=> {
return subjectsArray.map((id) => {
return SubjectsServes.getById(knexInstance, id);
}).reduce((acc,el)=>{
acc.push(el);
return acc;
},[])
//return array of promises
}
const addSubject = (knexInstance, users, res) => {
Promise.all(
users.reduce((acc,el)=>{
acc.push(TutorsSubjectsService.getAllSubjectsForATutor(knexInstance, el.user_id)); return acc;
},[])
).then((userResults) => {
//resolve all promises userResult is an array of result from promises above
Promise.all( userResults.reduce((acc,el)=>{
//for each user create array of promises given the subject list
acc = acc.concat(testIt(el))
} ,[]).then((results)=>{
return res.status(200).send(result);
}).catch( (err)=>{
console.log(err);
return res.status(500).end();
} )
})
.catch(err => {
console.log(err);
return res.status(500).end();
})
}
当你 .then() 这意味着你正在解决承诺。所以没有返回到 promise.all。 Promise.all().then( result=>{} )
result 是 promises 的输出数组。你必须将所有的承诺链接在一起。它们是异步的,2 个承诺都同时运行。所以你的结果名称将是不明确的,可能是初始值(空数组)
添加回答
举报