老师,是这样理解吗?

老师,是这样理解吗?

    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(data){
		return  eat(data);
	})
	.then(function(data){
		return wash(data);
	})
	.then(function(data){

		console.log(data);
	})

Promise在执行then方法中执行回调函数resolve,这里的resolve就是eat,eat执行成功之后的参数data(鸡蛋炒饭)传入下一个then,作为下一个then的参数传给wash,一层一层下去,这样理解对吗?

但是为什么要return (return eat(data)),函数中不是已经return p 了吗?


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,你的理解是正确的。继续加油,祝学习愉快~

好帮手慕码 2020-06-17 09:55:40

同学你好,解答如下:

1、理解是正确的;

2、 这里的return的作用是把第一个回调函数的返回结果作为参数,传递给第二个回调函数:

http://img1.sycdn.imooc.com//climg/5ee977cd096efa1804290100.jpg

http://img1.sycdn.imooc.com//climg/5ee977e30991f1b208280531.jpg

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

  • 提问者 qq_勿忘初心_H #1
    eat(data),eat函数执行之后返回了p呀,为什么还要return eat(data)
    2020-06-17 10:50:43
  • 提问者 qq_勿忘初心_H #2
    cook() .then(function(data){ console.log(eat(data)+'-------'); //[object Promise]-------,eat(data)返回的就是一个Promise对象 //所以这里的匿名function(data){} 就是cook里面的resolve回调,这个回调执行之后需要返回Promise对象,才能方便下一次调用then,eat(data)的结果就是Promise对象,所以需要返回(return eat(data)),这样理解对吗? return eat(data); }) .then(function(data){ return wash(data); }) .then(function(data){ console.log(data); }) 老师,看我注释里面的理解
    2020-06-17 11:04:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师