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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在回调中调用函数本身[关闭]相关的知识,希望对你有一定的参考价值。

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

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

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

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

}
setInterval(dodo, 0);
答案

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

所以只需在那里打电话:

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

你不需要全球的can州和setInterval

另一答案

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

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次,这基本上就是你所有的程序。我不能想到一个必要的用例,它在性能方面可能不太公平。

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

以上是关于在回调中调用函数本身[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能在我的回调中调用我的 vue 组件的函数[关闭]

这种优化有名称吗?

无法在回调函数中访问属性React

0179 定时器 之 setTimeout() :开启定时器,5秒后关闭广告案例,停止定时器

当活动被破坏但我必须继续执行片段中的代码时该怎么办?

js 彻底理解回调函数