微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 非阻塞同步AJAX

有没有办法执行不冻结浏览器的同步AJAX查询?在我看来,在大多数情况下,同步请求更容易使用,但是它们阻止代码的其他部分执行的事实是一个真正的杀手.有没有办法在没有负面影响的情况下获得同步AJAX? (是的,我意识到“同步AJAX”一词是矛盾的.)

解决方法:

我将提供允许此类行为影响的不良方面的示例.

让我们说你有这个程序:

<script>
var file = "foo.json";

function nullIt() {
    file = null;
}

function loadFile() {
    if (file != null) {
        synchronousLoad(file);//imagine the load takes 5 seconds
        alert("i just loaded: " + file);
    }
}

window.onload = loadFile;
</script>
<button onclick="nullIt()">click me</button>

这里的坏事 –

>当synchronousLoad()阻塞5秒钟时,用户单击该按钮,事件处理程序将快速运行完成.
>现在文件变量为null.
> synchronousLoad()完成并返回,让执行在下一行代码上恢复
>但文件现在为null,并且输出用户的消息被破坏.

这里的真正问题是你不能以同样的方式推理你的代码.仅仅因为某些事实
第5行是真的,并不意味着它在下一行仍然是真的.这使得编写无错误程序变得非常困难.

有些编程语言支持多线程,你必须处理这些问题,尽管你有工具来帮助解决这些问题.
但是,对于程序员来说,它仍然需要付出额外的努力.

相比较而言,使用回调来执行异步操作是ez-mode.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐