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

来,把settimeout的代码改成我们想要的结果

来,把settimeout的代码改成我们想要的结果

小唯快跑啊 2019-03-13 11:13:07
const obj = {    name: " jsCoder",    skill: ["es6", "react", "angular"],    say: function () {        for (var i = 0, len = this.skill.length; i < len; i++) {            setTimeout(function(){                console.log(i);                console.log(this.skill[i]);            }(i), 0)            console.log(i);        }    }};obj.say();改成settimeout中可以正常顺序打印i和依次打印skill,大家都懂的,有哪些方法,各位发挥
查看完整描述

4 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

const obj = {


    name: " jsCoder",

    skill: ["es6", "react", "angular"],

    say: function () {

        this.skill.forEach(function(item,index){

            setTimeout(function(){

                console.log(index)

                console.log(item);

            },0)

        })

    },

    say2:function(){

        for (var i = 0, len = this.skill.length; i < len; i++) {

            setTimeout(function(i,item){

                console.log(i);

                console.log(item);

            },0,i,this.skill[i]);

        }

    },

    say3:function(){

        const arr=this.skill.slice();

        let i=0;

        function pop(){

            const item=arr.shift();

            if(item){

                console.log(i);

                console.log(item);

                i++;

                setTimeout(pop,0);

            }

        }

        setTimeout(pop,0);

    }

};

obj.say();

setTimeout(function(){

    obj.say2();

},1000)

setTimeout(function(){

    obj.say3();

},2000)


查看完整回答
反对 回复 2019-03-24
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

          say: function ()

            {

                var that = this;

                for (var i = 0, len = this.skill.length; i < len; i++)

                {

                    setTimeout(function()

                        {

                            console.log(i);

                            console.log(that.skill[i]);

                        }(i), 0)

                    console.log(i);

                }

            }


查看完整回答
反对 回复 2019-03-24
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

say: function () {

    for (var i = 0, len = this.skill.length; i < len; i++) {

        setTimeout(((i) => {

                        return () => {

                            console.log(i);

                            console.log(this.skill[i]);

                        }

                    })(i), 0)

        console.log(i);

    }

}


查看完整回答
反对 回复 2019-03-24
?
MM们

TA贡献1886条经验 获得超2个赞

function passTheRiver(){


const obj = {

    "count":0,

    name: " jsCoder",

    skill: ["es6", "react", "angular"],

    say: function () {

        var that = this;

        for (var i = 0, len = this.skill.length; i < len; i++) {

            setTimeout(function(){

                console.log(that.count);

                console.log(that.skill[that.count]);

                that.count++;

            }, 0)

            console.log(i);

        }

    }

};

obj.say();


查看完整回答
反对 回复 2019-03-24
  • 4 回答
  • 0 关注
  • 536 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信