gpt4 book ai didi

javascript - 如何避免javascript中的异步?

转载 作者:行者123 更新时间:2023-11-28 10:45:13 24 4
gpt4 key购买 nike

$(document).ready(function () {
$.get("...", function (domus, status) {
console.log(1);
}
console.log(2);
}

使用这段代码,根据JavaScript异步规则,console.log(2)console.log(1)之前执行(并打印) .

我需要执行$.get返回的回调(打印的内容 console.log(1) )严格位于以下代码行之前。

最佳答案

简而言之,你不能。

没有办法强制异步函数同步。相反,如果您有异步操作,则必须构建所有代码来处理该操作。

你最好的选择就是接受异步性并内置它来处理它:

$.get('', function () {
console.log(1);
}).then(function () {
console.log(2);
});

从长远来看,这会给你带来最少的麻烦。

还有其他方法可以处理它,例如使用值来跟踪某些事情是否完成,然后设置超时来定期检查:

let ready = false;

$.get('', function () {
ready = true;
console.log(1);
});

function checkReady() {
if (ready) {
console.log(2);
} else {
setTimeout(checkReady, 500);
}
}

checkReady();

这将在运行前每 500 毫秒检查一次是否已准备好。这将使您隐藏代码的异步性质。这可以在异步操作非常非常少的情况下工作,但如果您不小心,它也可能会导致困惑和奇怪的错误,因此请小心使用它。

关于javascript - 如何避免javascript中的异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44679090/

24 4 0
文章推荐: swift - Swift 中的 Java "equals"等价物
文章推荐: css - 所有屏幕分辨率的全宽 div
文章推荐: javascript - 使用