Javascript 在setInterval上返回一个值

Javascript 在setInterval上返回一个值,javascript,reactjs,Javascript,Reactjs,我试图设置一个计时器,然后在计时器达到某个限制时返回一个值。在下面的代码中,我需要在经过的时间达到3时返回值 var timeElapsed = 0; var interval; var ExportApi = { tick: function() { timeElapsed ++; if (timeElapsed == 3) { clearInterval(interval); } console

我试图设置一个计时器,然后在计时器达到某个限制时返回一个值。在下面的代码中,我需要在经过的时间达到3时返回值

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
以供第二次使用?我需要在间隔触发一定次数后返回一些内容。间隔函数异步运行。你怎么能从中得到回报?