我遇到了Promise问题。我没有得到答案,因为异步。那么,我认为这是问题,因为当我运行代码时,我没有得到任何类型的错误,但我也没有得到任何答案。承诺中的异步问题
这是我的代码
'use strict'
import validator from "validator"
import cassandra from "./cassandra";
import timezone from "./timezone"
import requestRace from "./request"
exports.getUser = (req, res) => {
const getHistory = `SELECT inscriptionid,first_name,created,lastupdate,number,eventraceid ` +
`FROM inscription_data ` +
`WHERE userid = ${req.params.idUser} ` +
// `AND number IS NOT NULL ` +
`ALLOW FILTERING`;
if(req.params && validator.isUUID(req.params.idUser)) {
cassandra.execute(getHistory)
.then(ans => {
requestRace(timezone(ans.rows))
.then(aws => console.log("hola"))
.catch(err => console.log("error: ", err))
})
.catch(err => res.status(500).json({code: 500,data:{error: true,message: err}}))
}
}
,这另一种
'use strict'
import axios from "axios"
const route = `https://ms.***.com/v1/races/`
function requestRace(params) {
var newArr = new Array(), newObj = {}, hola
params.map(obj => {
axios.get(`${route}${obj['eventraceid']}?apikey=pub_nLbIjlCWNKAdB_O3qgTaoQ`)
.then(res => {
newArr.push(creaJSON(obj, res.data))
// console.log("New:", newArr)
})
.catch(err => console.log("error: ", err))
})
return newArr.then(ho => {return ho})
}
function creaJSON(obj,subojb) {
obj['race'] = subojb[`data`]
return obj
}
module.exports = requestRace
如果任何人都可以看到我的错误,我将不胜感激,如果你能解释一下哪里是我的错误,为什么
谢谢你提前这么多
通过“没有得到一个答案:”我假定你的意思是,服务器不发送响应?当然,你错过了这一点,你的代码中没有这样做(你只在错误情况下发送响应)。 – Bergi
想想当你的代码发生什么时。如果你在购物之前去购物 - 当然你不会得到任何东西。时间很重要,而不仅仅是地点。同一个地方在不同的时间可能会或可能不会有你想要的东西。例如,在第二个函数中考虑'newArr.push'。它是什么,你如何使用它?有一个不匹配。一步一步思考它,这看起来太过于随意(构造代码)。 YOu也应该重新考虑你对map的使用 - 它应该被用来构造新的数组。 –
谢谢@Mörre我发现我的错误,并用异步/等待修复。非常感谢。 –