【问题标题】:Callbacks are not working... (asynchronus) javascript [closed]回调不起作用...(异步)javascript [关闭]
【发布时间】:2021-08-16 19:20:08
【问题描述】:

我试图一个接一个地调用一个函数。我正在使用 discord.js,这是我的代码:


function1(function2)

async function function1(callback) {
    var guild = client.guilds.cache.get(config.Server);

    let channels = guild.channels;
    
    for (const channel of channels.cache.values()) 
    {
        //stuff...
    }
    callback();
}
async function function2(){
    //stuff
}

我的问题是回调不起作用...有什么帮助吗?

【问题讨论】:

  • console.log('2sec')后面的回调放到setTimeout...!?只有你传递给setTimeout 的内容会等待 2 秒,而不是它之外的所有内容。
  • 你在setTimeout完成之前调用回调
  • 这是一个例子......在我的代码中它不是超时。这是一个需要几秒钟的过程。而且我不能将回调放在块中,因为它是一个 foreach 函数,并且会多次调用它。
  • 那么您需要提供一个实际的代码示例,我们可以实际帮助您。
  • 那么build.channels.cache.forEach到底是什么?它异步完成?然后它可能还有一些方法可以在它之后链接另一个调用。但没有相关库的详细信息,我们只能推测。

标签: javascript callback


【解决方案1】:

你可以这样做:

test(test2);

function test(callback){
    setTimeout(() => {
        console.log('2sec')
        callback();
    }, 2000)
    
}

function test2(){
    console.log('success')
}

【讨论】:

  • 正如我在评论中所说,这是一个例子。不是 setTimeout 中的实际过程,如果我在 foreach 块内调用该函数,它将多次调用它。感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 2018-06-29
相关资源
最近更新 更多