如何每 30 秒永远重复这个 JS 函数的一部分?

How to repeat part of this JS function forever every 30 seconds?

好的,下面是我的函数的完整源代码。我只希望被“////////////”包围的部分重复。新功能也有效。我可以同时拥有它们,一旦我尝试将突出显示的函数拉入一个新函数并遇到大量错误时,我会非常困惑。

function reWebLogOn(steam, callback) {
    steam.webLogOn(function(newCookie){
        helper.msg('webLogOn ok');
        cookies = newCookie;
        offers.setup({
            sessionID: currentSessionId,
            webCookie: newCookie
        }, function(){
            if (typeof callback == "function") {
                callback();
            }
        }); 
        var steamcommunityMobileConfirmations = new SteamcommunityMobileConfirmations(
    {
      steamid:         config.steamid,
      identity_secret: config.identitySecret,
      device_id:       device_id,
      webCookie:       newCookie,
    });


///////////////////////////////////////////////////////////////////////////////////////////////////////////


    steamcommunityMobileConfirmations.FetchConfirmations((function (err, confirmations)
{
    if (err)
    {
        console.log(err);
        return;
    }
    console.log('steamcommunityMobileConfirmations.FetchConfirmations received ' + confirmations.length + ' confirmations');
    if ( ! confirmations.length)
    {
        return;
    }
    steamcommunityMobileConfirmations.AcceptConfirmation(confirmations[0], (function (err, result)
    {
        if (err)
        {
            console.log(err);
            return;
        }
        console.log('steamcommunityMobileConfirmations.AcceptConfirmation result: ' + result);
    }).bind(this));
}).bind(this));

///////////////////////////////////////////////////////////////////////////////////////////////////////////

    });  
}

使用计时器,Interval 会很方便

setInterval(function() {
    //.. part that should be repleated
}, 30*1000);

window.setInterval() 是你的朋友。 它在提供的时间间隔内执行一个函数。 例如,setInterval(()=>console.log("foo"),100) 将每 100 毫秒在控制台中记录 "foo"。

function reWebLogOn(steam, callback) {
    steam.webLogOn(function(newCookie){
        helper.msg('webLogOn ok');
        cookies = newCookie;
        offers.setup({
            sessionID: currentSessionId,
            webCookie: newCookie
        }, function(){
            if (typeof callback == "function") {
                callback();
            }
        }); 
        var steamcommunityMobileConfirmations = new SteamcommunityMobileConfirmations(
    {
      steamid:         config.steamid,
      identity_secret: config.identitySecret,
      device_id:       device_id,
      webCookie:       newCookie,
    });


///////////////////////////////////////////////////////////////////////////////////////////////////////////

setInterval((function(){
  steamcommunityMobileConfirmations.FetchConfirmations((function (err, confirmations){
    if (err)
    {
        console.log(err);
        return;
    }
    console.log('steamcommunityMobileConfirmations.FetchConfirmations received ' + confirmations.length + ' confirmations');
    if ( ! confirmations.length)
    {
        return;
    }
    steamcommunityMobileConfirmations.AcceptConfirmation(confirmations[0], (function (err, result)
    {
        if (err)
        {
            console.log(err);
            return;
        }
        console.log('steamcommunityMobileConfirmations.AcceptConfirmation result: ' + result);
    }).bind(this));
  }).bind(this));
}).bind(this),30000)

将您的代码放入 setInterval(function(){},1000) 计时器或进行一些递归调用。