【发布时间】:2020-01-08 13:56:42
【问题描述】:
我有一个类方法(对于'apollo-datasource-rest',它应该从plan_id 获取plan。我需要点击两个端点并合并数据。这适用于Promise.all([promise1, promise2]),然后传递@ 987654325@ 转到下一个多次调用GET /users 端点的Promise.all 方法。如果我console.log 退出返回的usersArray,我会得到用户数组,但如果我尝试返回该数组,它没有分配给objToReturn 变量。我还需要将snapshot2 中的数据添加到objToReturn,但这是次要的。
getPlanById = async ( planId ) => {
const promise1 = new Promise((resolve) => {
return resolve(this.get('/url1'))
});
const promise2 = new Promise((resolve) => {
return resolve(this.get('/url2'))
});
const objToReturn = await Promise.all([promise1, promise2])
.then(([snapshot1, snapshot2]) => {
return snapshot1.user_ids
})
.then((userIds) => {
this.getUsersFromUserIds(userIds).then((usersArray) => {
console.log(usersArray)
// return usersArray doesn't assign to objToReturn
})
})
return objToReturn
}
getUsersFromUserIds(userIds) {
let userPromises = []
userIds.forEach((uid) => {
const promise = this.get(`/users/${uid}`)
.then((response) => {
if (response.status === 'success') {
return response.data.user
} else {
return null
}
})
userPromises.push(promise)
})
return Promise.all(userPromises).
then((userPromiseData) => {
return userPromiseData
})
}
【问题讨论】:
-
你不会在最后一次回来。
return this.getUsersFromUserIds...需要等待objecttToReturn -
旁注:this.get() 已经返回了一个promise,所以这里的一堆代码是多余的。
标签: javascript es6-promise apollo-server