修修改改 没怎么弄明白

修修改改 没怎么弄明白

<!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>


正在回答

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

2回答

同学你好,肯定要通过参数接收的。可以参考如下理解:

1.cook中返回一个成功状态的函数resolve ,里面传递了数据。

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

then中第一个参数是成功的回调函数,它通过参数来接收cook中成功状态函数resolve 中传递的数据。

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

2.因为链式调用,都是按照顺序执行的,第二个then等待第一个then返回成功状态,才会执行里面的回调,且通过参数,接收上一个then返回的数据,所以最后一个then也是接收它前一个then中返回的数据哦。

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

祝学习愉快 ~

好帮手慕夭夭 2020-04-02 10:40:15

同学你好,代码是正确的。具体哪里不明白,可以详细描述一下,以便老师针对你不懂的地方进行指导。

祝学习愉快 ~

  • 提问者 Rain_2020 #1
    cook().then(function(e){ return eat(e); }).then(function(e){ return wash(e); }).then(function(e){ console.log(e); }) 这里不传参就得不到 cook的值? 还有 最后一个.then 怎么确定就是那个最后函数里的值?
    2020-04-02 17:09:48
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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