Javascript 围绕异步和返回语句的混淆
我试图做的是向Web API发出请求,然后如果输入有效,则从函数返回true,如果输入无效,则返回false。我希望请求是异步的,但我不希望函数在验证请求之前返回。在发出请求时,我只想继续处理输入 以下是该功能的重要部分: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
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请提供调用请求的用例或完整的伪函数。要深入讨论您试图做什么,请查看另一个答案,我将其标记为重复,这是一个非常常见的问题,我希望您能从上面的链接讨论中得到一些清晰的信息。如果我在返回之前等待请求完成,那么在处理请求时是否仍会触发事件?