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

js setTimeout 中怎么返回值

js setTimeout 中怎么返回值

慕码人2483693 2019-02-28 15:19:19
由于DOM加载问题,需要异步后才能获取到DOM的属性, 但是我需要返回这个判断, 怎么写才能返回出去判断后的值;代码如下,现在是不行的 checkOver(item){        let check = false;          setTimeout(() => {            check = $('#dept' + item.department_id)[0].offsetWidth < $('#dept' + item.department_id)[0].scrollWidth;            return check;          }, 1)      }
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

在setTimeout中你是拿不到返回值的,你可以用Promise来wrap一下。


function checkOver(item) {

   let check = false;

   let promise = new Promise(function(resolve, reject) {

     setTimeout(() => {

       check = $('#dept' + item.department_id)[0].offsetWidth < $('#dept' + item.department_id)[0].scrollWidth;

       resolve(check);

     }, 1);

   });

   return promise;

}


checkOver(item).then((check) => {

  console.log(check); // --> true/false

});


查看完整回答
反对 回复 2019-03-06
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

异步返回不出去的 

关于异步常用两种方式 callback和promise

callback回调:


checkOver(item,callback){

    let check = false;

    setTimeout(() => {

        check = $('#dept' + item.department_id)[0].offsetWidth < $('#dept' + item.department_id)[0].scrollWidth;

        callback&&callback(check)

    }, 1)

}

//调用

checkOver(item,function(check){

    console.log(check)

})


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

添加回答

举报

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