返回Promise和resolve或reject后的Promise有什么区别?
先说说我对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
后面可以调用then
、catch
,说明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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
方式一返回的promise状态是pedding,方式二返回的promise状态是resolve,具体看图吧,希望能帮到你