Javascript 即使在我返回结果之后,JS异步函数仍保持运行。我做错了什么?

Javascript 即使在我返回结果之后,JS异步函数仍保持运行。我做错了什么?,javascript,node.js,async-await,botkit-4,Javascript,Node.js,Async Await,Botkit 4,我正试图用Botkit定制一个Slack机器人进行锻炼,但我遇到了一个问题,似乎无法解决。我想从Reddit检索一篇随机文章,检查它是否是图像,然后返回它(如果是),否则获取另一篇文章。现在,我对async/await函数不太熟悉,我读了一些关于它的文档,但是看起来我仍然没有得到什么东西。有人能给我指出正确的方向吗 因此,在我的脚本中,我有以下内容: const reddit = require( '../app/reddit' ) module.exports = function(cont

我正试图用Botkit定制一个Slack机器人进行锻炼,但我遇到了一个问题,似乎无法解决。我想从Reddit检索一篇随机文章,检查它是否是图像,然后返回它(如果是),否则获取另一篇文章。现在,我对async/await函数不太熟悉,我读了一些关于它的文档,但是看起来我仍然没有得到什么东西。有人能给我指出正确的方向吗

因此,在我的脚本中,我有以下内容:

const reddit = require( '../app/reddit' )

module.exports = function(controller) {
    controller.hears( 'test123', 'message,direct_message', async ( bot, message ) => {
        let image = await reddit.get_random_image()
        console.log(image)
    } )
}
还有:

const get_random_image = async () => {

    let posts = await wrap.getHot( 'memes', { limit: 100 } )

    const post = fn.get_random_array_item( posts )

    if ( post.url.indexOf('.jpg') !== -1 || post.url.indexOf('.png') !== -1 || post.url.indexOf('.gif') !== -1 ) {
        console.log('image')
        return Promise.resolve( '*' + post.title + '* ( /' + post.subreddit_name_prefixed + ' )\n' + post.url )
    } else {
        console.log('not an image')
        return await get_random_image()
    }

}
module.exports.get_random_image = get_random_image
发生的事情是,当我在Slack中编写“test123”时,函数运行,它的第一个帖子确实是一个映像,一切看起来都很好,代码停止,但如果第一个帖子不是映像,函数再次调用它自己,它会一次又一次地运行一段时间,即使遇到映像也是如此

编辑:

添加了控制台的屏幕截图。 如果选择的第一篇文章不是图像,则会发生这种情况:

当它是一个图像时,就会发生这种情况:

我无法重现那种行为。您确定不再涉及代码吗?看一看,它工作得很好。另外,async已经返回了一个承诺,所以不需要返回承诺。resolve('response')您可以
返回“response”
,也不需要
返回等待,您可以
返回get_random_image()
@AleSanchez尝试了您的建议,但问题仍然存在。我在原始帖子中添加了一些控制台截图,谁在打印“run”消息?。这表明,无论发生什么,都是因为bot代码。@Alessanchez啊,对不起,我添加了console.log('run'),以使_random_image函数在调用它时看到它