Javascript 围绕异步和返回语句的混淆

Javascript 围绕异步和返回语句的混淆,javascript,node.js,discord.js,Javascript,Node.js,Discord.js,我试图做的是向Web API发出请求,然后如果输入有效,则从函数返回true,如果输入无效,则返回false。我希望请求是异步的,但我不希望函数在验证请求之前返回。在发出请求时,我只想继续处理输入 以下是该功能的重要部分: request({ url: url, json: true }, function (error, response, body) { if (!error && response.statusCod

我试图做的是向Web API发出请求,然后如果输入有效,则从函数返回true,如果输入无效,则返回false。我希望请求是异步的,但我不希望函数在验证请求之前返回。在发出请求时,我只想继续处理输入

以下是该功能的重要部分:

request({
        url: url,
        json: true
    }, function (error, response, body) {

        if (!error && response.statusCode === 200) {
            console.log(JSON.stringify(body));
            if(body.player !== "null") {
                console.log(body.player.socialMedia.links["DISCORD"]);
                console.log((client.users.get(author).username + "#" + client.users.get(author).discriminator));
                if (body.player.socialMedia.links["DISCORD"] === (client.users.get(author).username + "#" + client.users.get(author).discriminator)) {
                    fs.writeFile(`users/${body.player.uuid}.json`, `{"uuid":"${body.player.uuid}",\n"ign":"${nm}",\n"id":"${author}"}`, {"flag": "w"});
                    successFlag = true;
                }
            }
        }
    });
    console.log(successFlag);
    return successFlag;

如果我使用async/await,我不确定在提取数据时是否会继续处理输入。

返回成功标志应该在回调中,否则在没有得到响应的情况下,它将被返回。因此,将最后3行更改为

    console.log(successFlag);
    return successFlag;
});

那还是不行。从回调返回请求不会使代码同步工作。从中调用请求的封闭函数仍将退出。因此封闭函数中有更多的返回?不能直接从异步操作返回。有关更多信息,请参见问题注释中的链接答案是的,您可以从异步操作返回,线程用于客户端,也就是说,如果响应时间太长,请避免它,但由于我们只阻止与响应相关的操作,我认为这是正确的方法。@Ender\u the\u Xenocide请提供调用请求的用例或完整的伪函数。要深入讨论您试图做什么,请查看另一个答案,我将其标记为重复,这是一个非常常见的问题,我希望您能从上面的链接讨论中得到一些清晰的信息。如果我在返回之前等待请求完成,那么在处理请求时是否仍会触发事件?