node-fetch的用法问题

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参数。

虽然也看了一些文章,不过对于回调嵌套还是不知道怎么写,没有理解。
希望大家不吝赐教,如果看到代码有什么别的问题,也请一并提出来。(:

阅读 6.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏