【发布时间】:2018-04-16 06:39:16
【问题描述】:
我开始注册我的所有注册项目,然后在页面上列出的每个项目下显示一个小的用户评分部分。问题是收款电话是异步的,并且在电话完成后我无法发送快速响应。我使用了一种非常糟糕的方法来通过超时来实现这一点,所以我正在寻找更好的解决方案建议。
router.route('/').get((request, response) => {
let collection = []
Item.find({}, function (err, data) {
if (!err) {
data.forEach((item) => {
User.findOne({_id: item.seller}, function (err, res) {
if (!err) {
let parse = JSON.parse(JSON.stringify(item))
let filter
switch (item.category) {
case 'Relics & Antiques':
filter = 'antique'
break
case 'Coin & Currency':
filter = 'currency'
break
case 'Real Estate':
filter = 'realestate'
break
case 'Sports Memorabilia':
filter = 'sports'
break
case 'Fine Art':
filter = 'art'
break
case 'Jewellery':
filter = 'jewel'
break
case 'Automobile':
filter = 'auto'
break
}
parse.rep = res.rep
parse.sellerName = res.username
parse.sellerAvatar = res.avatarURI
parse.filter = filter
collection.push(parse)
}
})
})
setTimeout(() => {
response.render('home/index', {item: collection})
}, 500)
}
})
})
【问题讨论】:
-
你可以使用 es6
Promise或async await