返回Promise和resolve或reject后的Promise有什么区别?

发布于 2022-09-06 06:11:47 字数 1349 浏览 12 评论 0

先说说我对Promise的理解:
1、Promise主要是对回调嵌套的一种优化方案,早期使用$.ajax()的时候需要传递一个回调函数,如果业务导致层级嵌套太多,会非常难看,现在的Promise在后面直接.then()或者.catch()则要优雅许多。
2、Promise里面的resolve或者reject的调用,会将当前这个Promise置于一种状态(暂时忘记了,但是个人觉得不影响),不管调用什么,都表示这个Promise已经结束了,和$.ajax()的回调函数一样。

下面是一段分装axios的伪代码,fetch是基于axios封装的代码,实在有些看不明白或者不太确认,麻烦各位指点指点,先谢谢了!

伪代码:

return new Promise((resolve,reject)=>{
    fetch(config).then(res=>{
        resolve(res.data);
    }).catch(error=>{
        reject(error);
    });
});

问题:

1、因为fetch后面可以调用thencatch,说明fetch函数返回的也是一个Promise,这么理解没错吧?
2、那么Promise(new Promise)又包一个Promise(fetch)是什么意思呢?是不是直接return fetch(config)就可以了呢?
3、参考下面代码:方式1和方式2分别返回的Promise有什么区别呢?方式2种调用resolve或者reject这个这个Promise对外部有什么区别么?(个人觉得没区别,只不过是Promise对象的状态不同罢了)

//方式1:
return new Promise((resolve,reject)=>{});

//方式2:
return new Promise((resolve,reject)=>{
    resolve(res.data);
    //或者
    //reject(res.data.err);
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云醉月微眠 2022-09-13 06:11:47

方式一返回的promise状态是pedding,方式二返回的promise状态是resolve,具体看图吧,希望能帮到你图片描述

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文