这里为什么不能这样替换?
来源:3-1 Loading组件
lcyjerry
2020-05-08 17:51:21
}).then(data => {
return new Promise(resolve => {
console.log(data)
setTimeout(() => {
resolve(data);
}, 2000);
})
})
这一步为什么不能替换成
then(data => {
setTimeout(() => {
return data
}, 1000);
})
3回答
好帮手慕夭夭
2020-05-09
同学你好,问题解答如下:
1.是的,es6 promise就是这样用,固定记住。
2之前老师说了,老师就是想要一个1s之后再返回数据的效果,因为数据加载过快看不到加载的过程,所以用定时器模拟了一下。当然,同学不想要加这个效果,就可以不这样写哦~
祝学习愉快 ~
好帮手慕夭夭
2020-05-09
同学你好,catch是es6语法规定好的,用来捕获错误信息的,固定记住这样用就行。另外,不知道同学怎么写的,建议把代码全部粘贴上来,以便老师为你解答。
祝学习愉快 ~
好帮手慕夭夭
2020-05-08
同学你好,如果写成第二个方式,那么then就没有设置返回值,返回值即undefined。如下:
第一个是给then设置了返回值,返回值是一个promise对象
第二个虽然设置了返回值,但是它是定时器的返回值。then没有设置自己的返回值,所以返回值即undefined。它会把undefined转换为一个promise,相当于promise.resolve(undefined),那么传递的数据就是undefined,所以不对哦。
你可以把定时器去掉,这样给then设置了返回值,转换为promise.resolve(res)就对了。
之所以老师那样写,是因为想要有一个加载的过程,让数据1s之后再返回,所以就返回了一个Promise对象哦。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
相似问题
回答 3
回答 1