【发布时间】:2019-12-30 00:30:27
【问题描述】:
我正在从不同的 http 请求中获取板球比赛和得分。第一个获取匹配列表(具有唯一 ID),第二个获取使用唯一 ID 的分数。我需要完成第二个 http 请求(data.map 函数),然后发送数据变量值(在 res.json 中不使用超时)。我知道使用 Promises/Callbacks,但我对代码感到困惑。目前使用 setTimeout 等待,但我不想使用超时。请帮忙。
app.get('/api/matches', (req, res) => {
let url = `http://cricapi.com/api/matches?apikey=${key}`
request(url, { json: true }, (err, resp, body) => {
if (err) return res.json({
error: 1,
msg: err,
})
let data = body.matches.filter(match => {
return match.matchStarted
})
data.map((element, index) => {
let requrl = `http://cricapi.com/api/cricketScore?apikey=${key}&unique_id=${element.unique_id}`
request(requrl, { json: true }, (err, resp, body) => {
element.score = body.score
data.push(element)
})
})
setTimeout(()=>{
res.json({
error: 0,
matches: data
})
},2000)
})
})
期望输出与他们的分数匹配,但没有超时功能,当前输出未定义。
【问题讨论】:
-
你使用的是哪个请求库?
-
你能在这里分享一下密钥吗?需要测试一种方法。您可以稍后重新生成它。
-
Nodejs 请求是我正在使用的;这个:npmjs.com/package/request
-
很抱歉,我无法共享密钥。执行此代码时,分数会显示在网页中,但使用超时功能等待数据更新。但是使用 Promises,将执行第二个 http 请求并更新数据。但是在这里我很困惑如何做到这一点。
标签: javascript node.js