不太明白then里面写的东西
cook()
.then(eat)
.then(wash)
.then(data=>console.log(data));
我看好多同学都是在then里面写一个function(){},然后括号里面写一个形参,再在花括号里调用相应的方法。
可是我这种直接写个方法名eat、wash怎么也能调用呢?也没有进行传参的操作呀,怎么就能正常打印所有内容呢?而且我直接写eat()、was()的话,就只会调用这两个方法里的第一个打印语句,然后后面跟两个undefined,一共只会出来5句话,为什么?
正在回答
同学你好,对于你的问题解答如下:
1、语法规定,如下图所示的两种写法都是可以实现效果的,同学直接传入函数名的写法,可以理解为是简写格式。
2、直接写eat()和wash()表示调用该方法时没有传递参数,函数内部无法访问到data,所以打印出来的是undefined
3、老师这边测试只是会打印出来undefined,但是不止五句内容,同学可以再测试下
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
同学你好,对于你的问题解答如下:
1、resolve中的值是传递到then方法中的参数,只有在then中通过console.log输出传入的参数,才可以在控制台查看到信息
2、因为同学的写法是eat()和wash(),eat和wash方法内部有返回的值,但在then方法中并设置返回值,也没有使用console.log打印对应的值,所以其他的两个不会在控制台中显示。
那为什么会“鸡蛋炒饭”会打印出来呢,是因为cook方法内部返回了p,调用时,就会将cook方法中的resolve方法中的值传递到下一个then方法中,由于前两个then方法中没有接收,也没有设置返回值,所以最后一个then方法中接收的是cook返回的值,输出出来了。
老师这里给同学举例几个情况,同学对比了解下,如下:
不使用最后一个then输出内容
“鸡蛋炒饭”就不会打印出来
在第一个then接收cook中的resolve值,然后将eat返回出去,那么最后一个then中输出的就是eat方法中resolve中的值
同学可以测试理解下,祝学习愉快~
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星