在回调中调用函数本身[关闭]

问题描述 投票:-2回答:2

我不太确定Title与我的问题有关,很抱歉。

我有调用回调函数的异步函数。所以主要的想法是我想在“asyncFunc”完成后每次都调用函数“dodo”。

那有什么模式吗?是否存在与内存泄漏相关的问题?

var can = true;
function dodo() {
    if(can)
    {
        can = false;
        asyncFunc(function(data) {
            doSmth();
            can = true;
        });
    }

}
setInterval(dodo, 0);
javascript asynchronous callback
2个回答
1
投票

主要想法是我想在“asyncFunc”完成后每次调用函数“dodo”。

所以只需在那里打电话:

function dodoForever() {
    asyncFunc(function(data) {
        doSmth();
        dodoForever(); // <==
    });
}
dodoForever();

你不需要全球的can州和setInterval


0
投票

你可以打电话给它。像这样。

var can = true;
function dodo() {
    if(can)
    {
        can = false;
        asyncFunc(function(data) {
            dodo(); // this will run `dodo` function again.
            doSmth();
            can = true;
        });
    }

}
setInterval(dodo, 0);

正如评论中提到的那样,这将使筹码上升。你有dodo每0ms运行一次。这基本上会将dodo称为TON次,这基本上就是你所有的程序。我不能想到一个必要的用例,它在性能方面可能不太公平。

真的想想你为什么试图像这样运行它以及最终目标是什么。

© www.soinside.com 2019 - 2024. All rights reserved.