javascript - 函数内定时器怎么返回数据?
阿神
阿神 2017-04-11 12:38:16
0
4
543

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

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

阿神
阿神

闭关修行中......

全部回覆(4)
刘奇
function timeValue(time) {
    console.log(time)
}
setInterval(function(){
    var times=new Date().getTime();
    timeValue(times)
},1000)
左手右手慢动作

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

巴扎黑

你这里的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);
}())
Peter_Zhu

你的需求是·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);
});
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板