我试图等待(Promise.all
)一系列 Promise ,它们使用 Sequelize.js 来运行数据库查询,可以解决< / strong>来自then
。
我正在按以下方式兑现自己的诺言:
for (furnix in shorthandFurni) {
furniData = shorthandFurni[furnix]
furniSplit = furniData.split(":")
CompletedPromises.push(new Promise(resolve, reject) => {
db.query("...").then(result => {
. . .
// depending on the for-loop
resolve({
otherdbdata: . . .,
furniData: furniData,
furniSplit: furniSplit
})
})
})
}
然后返回(在for循环之后)。
return Promise.all(CompletionPromises)
这一切都很好,但是问题出在变量furniData
和furniSplit
上,这是我所承诺的解决方案的一部分...现在,当此代码在我的服务器上执行时,对于所有承诺解决方案,返回的变量furniSplit
相同。
furniSplit
作为变量带入resolve函数的范围,以便在for循环的每次迭代中提供唯一数据,而不是最后一个。感谢您的帮助。
答案 0 :(得分:2)
乍看之下,这似乎是一个范围界定的问题。 试试
const furniSplit = furniData.split(":");
答案 1 :(得分:0)
您可以使用该函数获取相同的新值Data,但由于引用不同,它们并不相等。
for (furnix in shorthandFurni) {
const furniData = () => shorthandFurni[furnix]
const furniSplit = () => furniData.split(":")
CompletedPromises.push(new Promise(resolve, reject) => {
db.query("...").then(result => {
. . .
// depending on the for-loop
resolve({
otherdbdata: . . .,
furniData: furniData(),
furniSplit: furniSplit()
})
})
})
}