gpt4 book ai didi

javascript - 强制顺序执行 javascript 的替代方法

转载 作者:行者123 更新时间:2023-11-30 17:23:52 25 4
gpt4 key购买 nike

我正在寻找一种在 JavaScript 中执行多个函数并强制它们按顺序运行的方法。实现此目的最直接的方法是使用回调函数(这是本论坛和其他地方最常见的建议)。回调函数的问题是生成的代码很容易变得难以阅读,因为结果可能是很多嵌套的回调函数。我想知道以下代码是否也会按顺序执行:

function doSomeThingOne(){
//do something intense here that takes quite some processor time
void(0); //dummy statement for illustration purposes only
return true;
}

function doSomeThingTwo(){
//do something intense here that takes quite some processor time
void(0); //dummy statement for illustration purposes only
return true;
}

function testSequentialExecution(){
//a temporary variable just to capture the
var bolTemp=false;

//execute the first function
bolTemp=doSomeThingOne();

//after this is done, execute the second function
bolTemp=doSomeThingTwo();
}

//kick off the (hopefully) sequential execution
testSequentialExecution();

我正在寻找一个简单的 JavaScript 解决方案。如果我的函数 doSomeThingOne() 和 doSomeThingTwo() 不执行异步运行的代码(如典型的 AJAX 请求),这种编码风格是否会强制函数同步执行?

最佳答案

当然可以。这与 JavaScript 不会打乱任何其他函数的内容的方式相同——函数中的表达式将始终按顺序执行。具体而言,代码块内的所有表达式({} 之间的内容)将始终按顺序执行。函数体就是这样的代码块。

表达式可能有异步副作用(比如调用 setTimeout() 或进行 AJAX 调用)但表达式本身是按顺序求值的。浏览器可以决定保留对表达式的一部分的引用并在以后执行这些部分。

您的问题似乎是您在异步世界中花费了太多时间;-)

主要问题通常是您执行异步操作。然后,函数结束,最终将调用回调。没有好的方法来序列化这个。也许JavaScript promises会有帮助。

关于javascript - 强制顺序执行 javascript 的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24650547/

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