Javascript 在setInterval上返回一个值
我试图设置一个计时器,然后在计时器达到某个限制时返回一个值。在下面的代码中,我需要在经过的时间达到3时返回值Javascript 在setInterval上返回一个值,javascript,reactjs,Javascript,Reactjs,我试图设置一个计时器,然后在计时器达到某个限制时返回一个值。在下面的代码中,我需要在经过的时间达到3时返回值 var timeElapsed = 0; var interval; var ExportApi = { tick: function() { timeElapsed ++; if (timeElapsed == 3) { clearInterval(interval); } console
var timeElapsed = 0;
var interval;
var ExportApi = {
tick: function() {
timeElapsed ++;
if (timeElapsed == 3) {
clearInterval(interval);
}
console.log(timeElapsed);
},
getValues: function() {
interval = setInterval(this.tick, 1000);
//Once interval completes return the following values:
return [{val: '1'}, {val: '2'}];
}
};
module.exports = ExportApi;
//Call get Values
var x = ExportApi.getValues();
无法从异步方法获取同步返回。
尝试了解更多关于异步javascript、Deffer和Promission的信息。
通过简单明了地添加到您的代码中,我返回类似于promise的对象:
var timeElapsed = 0;
var interval;
var ExportApi = {
tick: function(next) {
timeElapsed ++;
if (timeElapsed == 3) {
clearInterval(interval);
next();
}
console.log(timeElapsed);
},
getValues: function() {
return {
then: function(fn) {
interval = setInterval(this.tick.bind(this, function(){
fn([{val: '1'}, {val: '2'}])
}), 1000);
}
};
}
};
module.exports = ExportApi;
//Call get Values
ExportApi.getValues().then(function(x){
console.log(x);
});
因此,当您了解更多关于真实承诺的信息时,您的界面将不会改变:)您的意思是在间隔触发一定次数后要执行某项操作?您不能从
setInterval
返回值-这没有意义。你能澄清一下你真正想要达到的目标吗?因为目前您正在混合匹配不匹配的代码。您到底需要什么?此ExportApi
根本无法使用。谁将清除timeappeased
以供第二次使用?我需要在间隔触发一定次数后返回一些内容。间隔函数异步运行。你怎么能从中得到回报?