router.get("/userInfo", function (req, res, next) {
console.log(req.query)
let userInfo = ''
let userid = req.query.userid
let content = ""
let matches = ""
let status = ""
let clloz = {}
userinfoAPI = api.players.getPlayerInfo
if (userid !== '') {
fetch(`${userinfoAPI}${userid}`)
.then(res1 => res1.json())
.then(json => {
if (json.profile) {
clloz = {
status: 0,
content: json
}
// res.status(200).send(clloz)
} else {
res.status(200).send({
status: 1,
content: '此id不存在'
})
return Promise.reject();
}
})
.then(function () {
console.log(111)
})
.catch(function (err) {
console.log("err", err)
})
} else {
res.status(200).send({
status: 1,
content: '请输入数字id'
})
}
})
如图所示,做的一个查dota2玩家信息的功能,我想要在请求玩玩家信息以后如果id存在,就再访问一下matches API去查一下他最近的比赛信息,一并返回到前端。在用fetch的时候遇到几个问题
1.当我查到id不存在的时候,下面的then就不需要执行了,那么是不是直接返回Promise.reject()就可以了;
2.有时候点击搜索会报fetchError:socket hang up的错误,不知道是什么原因;
3.看了一下fetch的文档,我还是不太清楚then里面的function的参数到底是是什么,好像有很多不同的情况,是根据接口返回的数据类型来确定么,比如后面有很多then,他们的function里面的参数都是什么;
4.在第一个接口请求返回以后我要再请求matches接口,这时候我是在上面代码中的第三个then里面写这个请求,这时候我需要前面接口返回的结果,我的方法是用了一个变量保存这个结果,我想知道有没有办法在传给这个then的function参数。
虽然也看了一些文章,不过对于回调嵌套还是不知道怎么写,没有理解。
希望大家不吝赐教,如果看到代码有什么别的问题,也请一并提出来。(: