完全不懂啥意思
}).then(data=>{
return new Promise(resolve=>{
setTimeout( ()=>{resolve(data)},5000 )
})
})
为什么要在then里面新建一个promise对象,不懂,promise对象也不懂
完全就是不懂
正常公司项目里经常用到promise对象吗?不就是使用axios传输就完了吗?
正在回答
同学你好,问题解答如下:
1.没错,要写在then中。throw new Error('没有成功获取到数据!'); 这句代码是在执行代码的过程中,出现问题,用来抛出一个错误提示的。而catch是用来捕获这个错误的,把抛出错误的代码放在捕获错误的地方,语法是不对的。
2. 要考虑到接口出问题不能用的情况。例如后台的服务器故障了,接口不能用了,请求不了数据了。这个时候就会报错。
3.这里的代码确实不需要判断了,可以去掉。
有的时候也要考虑if判断,因为错误类型的是不一样的,例如错误信息可能是空字符串,可能是null。 如果是这些类型的错误,我们不想要它输出,或者要想要做其他的一些操作,就可以进行判断。这个需要具体情况具体分析了,同学先不用多想。这里可以不用写,因为已经写了报错要抛出的错误信息,老师可能习惯性写了一个判断。
4. 错误图片使用数组原因如下:
是因为获取的图片数据也是一个数组,数组中保存了多个对象,对象中保存着图片数据。然后在模板中绑定这些图片时,使用了循环先遍历了数组中。依次拿到每一个对象。然后获取对象中保存的图片。如果直接返回对象,数据类型不一致了,遍历就不能正常拿到数据了。
同学可以输出一下数据:
是一个数组,所以错误图片也必须是一个数组保存一致。这样才能遍历数组,找到数组中的对象。然后进行绑定。
具体循环和绑定如下:
sliders就是拿到的数据,遍历时,item就是数组中的元素,也就是对象,然后再通过xx.xx的语法获取对象的属性。 如果把错误信息返回的数据改成一个对象,那么遍历的sliders就是一个对象,item表示的就是对象中的属性。后面给a绑定时,直接通过item绑定就行,再使用xx.xx的语法就不对了,所以需要绑定数据的类型一致,这里才能成功遍历并绑定上图片哦。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
同学你好,问题解答如下:
1、Promise自带两个参数函数,resolve和reject。语法:
new Promise( function(resolve, reject) {...} /* executor */ );
Promise构造函数执行时立即调用executor 函数,也就是function。 resolve 和 reject 两个函数作为参数传递给executor(executor 函数在Promise构造函数返回所建promise实例对象前被调用)。promise的状态有两种,成功时调用resolve函数,失败时调用reject 函数。
这是resolve的规定用法,可以参考官方文档:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise
2、在js中,大部分代码都是同步执行的,也就是一步一步的按照顺序执行。但是有时候我们需要异步执行,获取数据的时间可能会很长,这个时间我们不想等待,一边获取数据一边进行其他操作。这时候就可以使用promise。再加上定时器也是异步执行的。
视频中老师是为了模拟延迟获取数据,所以使用了promise,加上定时器,1s之后调用resolve方法,决议成功,返回数据。所以开始的时候显示加载图标,1s之后显示数据。
3、throw new Error('没有成功获取到数据!')可以在拿不到数据的情况下抛出。例如:
祝学习愉快!
同学你好,问题解答如下:
1、promise对象在前面es6基础部分讲解过:
https://class.imooc.com/course/817
主要是用于异步操作。
2、这里老师是为了模拟延迟获取数据,开始的时候显示加载图标,1s之后再返回数据,显示出来。
3、如果同学不想要延迟效果,就可以不添加promise 。
4、当通过接口获取数据,里面没有数据的时候,就会执行抛出的错误。当前项目中因为接口可以获取到数据,所以同学不添加这句话也可以。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
下面这又是一个问题啊,一共两个问题,上一个问题就给我回复丢了一个
home.js
return axios.get('http://www.imooc.com/api/home/slider', {timeout: 10000}).then(res=>{
// console.log(res.data)
if(res.data.code === 0){
return res.data
}
throw new Error('没有成功获取到数据!')
}
).catch(err=>{
if(err){
console.log(err);
}
return [
{
linkUrl:'https://www.immoc.com',
picUrl: require('assets/img/404.png')
}
]
这里面压根儿也没用到throw new Error('没有成功获取到数据!')这句话啊,这句提示信息根本没有,什么情况下用到throw new Error('没有成功获取到数据!')
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星