gpt4 book ai didi

node.js - if 语句将在回调之前同步执行?

转载 作者:太空宇宙 更新时间:2023-11-03 21:57:52 25 4
gpt4 key购买 nike

在进行异步函数调用之前,我必须更改 json 元素的值,如果存在,但我不确定此代码是否会按照我想要的顺序执行。这是一个简单的例子:

function first_function(json, callback) {
get_only_valid_elements_json(json, function(valid_json) {
if (valid_json.element) {
valid_json.element = something;
}
update_something(valid_json, function(error) {
if (error) {
return callback(error);
} else {
return callback({success:"YAY"});
}
});
});
}

我想知道以下代码将如何执行,更重要的是为什么执行。谢谢!

最佳答案

我觉得很合适。

假设 get_only_valid_elements_jsonupdate_something 在完成工作后调用传递给它们的函数,其执行方式如下:

  1. 它调用 get_only_valid_elements_json,并且 first_function 函数返回
  2. get_only_valid_elements_json完成时(即当它调用第二个参数中传递的回调函数时),它将执行if语句,并有条件地执行其 block
  3. 然后,update_something 被调用,然后 function(valid_json) {...} 返回
  4. update_something完成(即调用回调函数)时,它将执行if (error)语句和相应的 block
  5. 调用callback函数(无论错误还是成功),表明get_only_valid_elements_json已完成其工作

因此,这些函数在“真正的工作”完成之前同步返回。

异步调用的原因是当您等待某些事情时不阻塞执行过程,例如对 AJAX 调用的响应。您只需告诉浏览器在收到响应时执行给定的函数,因此当它收到响应时,它会调用您为 AJAX 调用提供的函数,该函数调用为 update_something 提供的函数,然后调用提供给 first_functioncallback

关于node.js - if 语句将在回调之前同步执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35631365/

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