gpt4 book ai didi

javascript - 回调不返回

转载 作者:行者123 更新时间:2023-11-30 12:17:08 27 4
gpt4 key购买 nike

出于某种原因,我看到了最后一个回调命中,即使它确实进入了第一个 if 语句。如果我做响应(res),它不应该首先返回吗?好吧,事实并非如此。由于某种原因,它仍然继续并达到第二个响应(res):

function find(response){
var res = {};
res.statusCode = 200;
var data = _gateway.find();

if(!data){
res.statusCode = 204;
res.body = null;

console.log("SETTING RESPONSE BODY TO NULL");
response(res);
}

console.log("SHHHHHHHHHHHHHOULD NOT GET HERE");
res.body = data;

response(res);
};

最佳答案

调用回调并不意味着当前函数将在此时停止执行。它与调用其他函数相同。在您的情况下,一旦回调函数返回一个值,控制权将仅转移到 find 函数,并继续执行其余语句。

要解决此问题,您需要在回调返回后立即从 find 返回,如下所示

...
if(!data){
res.statusCode = 204;
res.body = null;

console.log("SETTING RESPONSE BODY TO NULL");
response(res);
return; // return from the `find` function
}
...

你甚至可以像这样返回response的结果

return response(res);

以便控制会立即从find 函数转移。

关于javascript - 回调不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32153299/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com