gpt4 book ai didi

javascript - 没有乱七八糟的回调的 JavaScript 异步编程

转载 作者:数据小太阳 更新时间:2023-10-29 04:26:40 24 4
gpt4 key购买 nike

我想将异步函数转换为同步函数。

function fetch() {
var result = 'snap!';
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function messyCallback(data){
result = data;
});
return result;
}

document.write(fetch());​

See in action

结果总是“啪!”,因为 $.getJSONfetch() 完成后运行。

我的第一个想法是:

function fetch() {
var result = 'snap!';
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function messyCallback(data){
result = data;
});
<strong>while (true) {
if (result != 'snap!') return result;
}</strong>
}

它不工作,也吹掉了浏览器。

我读到了 generators and iterators in JS 1.7 ,但我不知道如何将其应用于我的问题。

这个问题实际上不是关于 jQuery 的。而不是 $.getJSON可以是任何其他异步函数。

最佳答案

另请参阅此问题:Halt JavaScript execution without locking up the browser

完全按照自己的意愿行事是行不通的。在单线程事件驱动环境中,您不能从异步创建同步(只能反过来!)。您应该接受该语言的异步特性,并围绕处理回调开发您自己的一致风格,以便您的代码可读/可维护。例如,您可以选择从不在回调闭包内做任何实际工作,而只是简单地调用另一个顶级函数/方法以保持清晰。

关于javascript - 没有乱七八糟的回调的 JavaScript 异步编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2222847/

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