为了账号安全,请及时绑定邮箱和手机立即绑定

cpu内存已被榨干

有人和我一样 在第三个球去往300px的路上卡的走不动的吗  递归加回调 直接把内存和cpu榨干了

正在回答

3 回答

粗粗想了一下有可能是第一个方法 回调函数一直占用着上一层的函数 形成了闭包 而resolve()是再调用了整个函数 不是从函数内部去调用 所以不会对资源有大量损耗。 也可能我写的第一段代码本身有问题。。

0 回复 有任何疑惑可以回复我~

同样的逻辑 但是这段代码流畅运行

var ball1 = document.querySelector('.ball1');

 var ball2 = document.querySelector('.ball2');

 var ball3 = document.querySelector('.ball3');

var Promise = window.Promise;    //Bug window 写成了Window

        function promiseAnimate(ball,distance){

            return new Promise(function(resolve,reject){

                function _animate(){   //此处在函数前加上_是私有函数书写规范

                    var marginLeft = parseInt(ball.style.marginLeft,10);

                    setTimeout(function(){

                        if ( marginLeft == distance) {

                            resolve();

                        } else {

                            if (marginLeft < distance) {

                                marginLeft++;

                            }else {

                                marginLeft--;

                            }

                        }

                        ball.style.marginLeft = marginLeft+'px';   //Bug此处需要加px

                        _animate();

                    },13);

                }

                _animate();

            })

        }

        promiseAnimate(ball1,100)

            .then(function(){

                return promiseAnimate(ball2,200)

            })

            .then(function(){

                return promiseAnimate(ball3,300)

            })

            .then(function(){

                return promiseAnimate(ball3,150)

            })

            .then(function(){

                return promiseAnimate(ball2,150)

            })

            .then(function(){

                return promiseAnimate(ball1,150)

            })


0 回复 有任何疑惑可以回复我~

这是第一段榨干内存的代码

var ball1 = document.querySelector('.ball1');

        var ball2 = document.querySelector('.ball2');

        var ball3 = document.querySelector('.ball3');

        // function animate(ball,distance,callback){

        //     var marginLeft = parseInt(ball.style.marginLeft,10);

        //     setTimeout(function(){

        //         if ( marginLeft == distance) {

        //             callback && callback();

        //         } else {

        //             if (marginLeft < distance) {

        //                 marginLeft++;

        //             }else {

        //                 marginLeft--;

        //             }

        //         }

        //         ball.style.marginLeft = marginLeft+'px';   //Bug此处需要加px

        //         animate(ball,distance,callback);

        //     },13);

        // }

        // animate(ball1,100,function(){

        //     animate(ball2,200,function(){

        //         animate(ball3,300,function(){

        //             animate(ball3,150,function(){

        //                 animate(ball2,150,function(){

        //                     animate(ball1,150,function(){

        //                         //回调结束

        //                     })

        //                 })

        //             })

        //         })

        //     })

        // })


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
进击Node.js基础(二)
  • 参与学习       76755    人
  • 解答问题       226    个

本教程带你攻破 Nodejs,让 JavaScript流畅运行在服务器端

进入课程

cpu内存已被榨干

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信