修修改改 没怎么弄明白
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script>
<script type="text/javascript">
function cook() {
console.log('开始做饭。');
var p = new Promise(function(resolve, reject){
setTimeout(function() {
console.log('做饭完毕!');
resolve('鸡蛋炒饭');
}, 1000);
});
return p;
}
function eat(data) {
console.log('开始吃饭:' + data);
var p = new Promise(function(resolve, reject) {
setTimeout(function() {
console.log('吃饭完毕!');
resolve('一块碗和一双筷子');
}, 2000);
});
return p;
}
function wash(data) {
console.log('开始洗碗:' + data);
var p = new Promise(function(resolve, reject) {
setTimeout(function() {
console.log('洗碗完毕!');
resolve('干净的碗筷');
}, 2000);
});
return p;
}
// cook().then(function(a){
// eat(a).then(function(b){
// wash(b).then(c=>{
// console.log(c);
// });
// })
// })
// cook()
// .then(eat)
// .then(wash)
// .then(c=>{console.log(c)})
cook().then(function(e){
return eat(e);
}).then(function(e){
return wash(e);
}).then(function(e){
console.log(e);
})
</script>
</body>
</html>
正在回答
同学你好,肯定要通过参数接收的。可以参考如下理解:
1.cook中返回一个成功状态的函数resolve ,里面传递了数据。
then中第一个参数是成功的回调函数,它通过参数来接收cook中成功状态函数resolve 中传递的数据。
2.因为链式调用,都是按照顺序执行的,第二个then等待第一个then返回成功状态,才会执行里面的回调,且通过参数,接收上一个then返回的数据,所以最后一个then也是接收它前一个then中返回的数据哦。
祝学习愉快 ~
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星