当前位置:去回答>生活百科>严格来说,JSONP

严格来说,JSONP

2024-05-11 14:34:54 编辑:join 浏览量:549

严格来说,JSONP

泻药

不想直接给你答案

你可以试试写个内容如下的a.js

alert('a')

然后

var scn = document.createElement('script');

scn.src = 'a.js';

document.getElementsByTagName('head').appendChild(scn);

alert('b');

看看执行顺序是先a后b

还时先b后a

就知道是同步异步

你还可以在以上代码中加入

async 来看看是否造成差异

如果你认为AJAX是异步的,那么JSONP就也是异步的。 这里的异步描述的是与服务器通讯的过程。

script的同步是相对于浏览器解析HTML Document的,而不是JS的。

异步的,无论script标签产生网络请求到script执行,还是jsonp的回调函数的执行都是异步的,非阻塞的。并没有歧义。

你所考虑的场景可能是eval这种,往dom上放一个script标签,并且里面包含执行一个回调函数的代码,那么这个在一定意义上可以考虑是同步的。(然而实际上这还是异步

谢邀。

我觉得题主要先搞清楚,在软件开发领域,在前端领域,同步和异步的概念分别是什么。

我在wikipedia上找到一个解释。其实可以简单的理解为:能立刻得到结果的,不影响代码顺序执行的,都是同步的。反之,都是异步的。

alert, confirm, prompt都需要较长时间执行,但它们并不影响代码顺序执行,所以,它们是同步的。

setTimeout, setInterval, ajax等网络请求方式,这些都是需要回调函数的,不能立刻得到结果,而且也不阻塞代码顺序执行,所以这些都是异步的。

再来看什么是jsonp:

jsonp可以理解为从网络加载的一段脚本,不是表达式,而是语句。通常的表现形式为,在请求的URL中传入一个要执行的函数的方法名,而在应答中调用这个方法。

所以,jsonp是异步的,并且是可以跨域请求的异步。

如果不在script tag里指定async,就默认是同步加载的,就像通常的JS请求。

请看

的回答,更全面。

其实把 jsonp 当成正常的 http 请求就好理解了。请求本身并没有同步异步的区别

长知识了 以前真没有深究过这个点

标签:JSONP,严格来说

版权声明:文章由 去回答 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.quhuida.com/life/76557.html
热门文章