search

Home  >  Q&A  >  body text

javascript - 函数内定时器怎么返回数据?

我想1秒钟返回当前时间戳。 哪里有问题?

定时器返回的是 当前开了多少个定时器。 怎么解决这个问题?

阿神阿神2773 days ago531

reply all(4)I'll reply

  • 怪我咯

    怪我咯2017-04-11 12:40:16

    function timeValue(time) {
        console.log(time)
    }
    setInterval(function(){
        var times=new Date().getTime();
        timeValue(times)
    },1000)

    reply
    0
  • ringa_lee

    ringa_lee2017-04-11 12:40:16

    setInterval()不能这样return把,应该直接赋给time

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-11 12:40:16

    你这里的time是一个函数,假如time所在的对象为a,则a.time()执行后返回的是一个定时器,并不是
    new Date().getTime()这个时间戳。
    而定时器的返回值是一个id
    id从1开始递增,你开了向个定时器,id就会是几。

    之前没注意到返回的只是个id,于是我测试了一下:

    console.log(setInterval(function(){console.log(1);},2000));
    console.log(setInterval(function(){console.log(2);},2000));
    console.log(setInterval(function(){console.log(3);},2000));
    clearInterval(2);
    

    楼主想一秒返回一个时间戳的话,要把你想实现的代码放到定时器里面去。
    比如,你可能想每秒修改一下页面中显示的时候,可以这样:

    (function(){
    var time=setInterval(function(){
      document.title=new Date().getTime();
    },1000);
    }())

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-11 12:40:16

    你的需求是·1秒后返回系统时间·吧?姑且算就是这个意思吧。。。

    js的函数都是必须立即返回的,不能实现你说的1秒的将来再返回,(或者你写个死循环,把时间卡住1秒,然后reutrn?那浏览器就假死了。。。)

    那怎么实现1秒钟后返回某个值呢?

    你去蛋糕店定蛋糕,蛋糕要1个小时才能做好,你又不想傻愣愣地等怎么办?你留个电话给他,做好了call你啊!

    同样的,你调用某个函数,这个函数在未来才会通知来拿返回值,那你需要事先给他传递个东西用来call你,这个东西就叫callback函数。这种场景,你需要给对方一个callback函数,而不是企图直接通过对方的return语句来返回你需要的东西。

    var WHATEVER = {
      time: function(callback) {
        setTimeout(function(){
          callback(new Date().getTime());
        }, 1000);
      }
    };
    
    WHATEVER.time(function(timestamp){
      console.log(timestamp);
    });

    reply
    0
  • Cancelreply