return问题

return问题

const getData = (url,options) => {
    return getJSON(url, {
        timeoutTime: TIMEOUT,
        ...options
    }).then(response => {
        if (response.code !== SUCC_CODE) throw new Error('出错了${response.code}');
        return response.data;
    }).catch(err => {
        console.log(err);
    })
}
export { getData };

老师,return一多,我就不知道怎么理解代码了,可以讲讲这段代码是怎么执行的吗

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小李 2023-04-13 11:35:43

同学你好,解答如下:

1、这段代码定义了一个名为getData的函数,它接受一个URL和一个options对象作为参数,并返回一个Promise。在getData函数中,它调用另一个名为getJSON的函数(第一个return也就是返回getJSON执行后的结果)并将options对象扩展到该函数中。getJSON函数还返回一个Promise,该Promise在响应数据可用时进行解析。

2、在then中,它检查响应代码是否不等于常量SUCC_CODE。如果不相等,则抛出一个带有响应代码的错误。否则,它返回响应数据。

3、在Promise的catch块中,它记录Promise链期间发生的任何错误。最后,导出getData函数,以便在其他模块中使用。

祝学习愉快!

  • 提问者 慕芸芸 #1

    第一个return不是返回一个promise对象吗?为什么第一个return也就是返回getJSON执行后的结果?

    第二个return是干嘛的?可不可以直接这样写

    const getData = (url,options) => {
        return getJSON(url, {
            timeoutTime: TIMEOUT,
            ...options
        })
    }
    export { getData };


    2023-04-13 12:03:04
  • 好帮手慕小李 回复 提问者 慕芸芸 #2

    1、第一个返回的结果就是一个promise对象。

    2、可以这么写,在模块中使用需要在链式操作一下如下:

    https://img1.sycdn.imooc.com//climg/64379b3c09f9400306950266.jpg

    那么既然是封装了,何不把数据直接处理成最终的结果呢。

    祝学习愉快!

    2023-04-13 13:56:34
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师