扫码关注官方订阅号
84669人学习
65727人学习
82984人学习
467778人学习
498837人学习
471966人学习
256484人学习
152542人学习
224170人学习
139536人学习
81804人学习
85022人学习
11944人学习
20001人学习
60816人学习
5487人学习
15007人学习
2150人学习
6980人学习
194925人学习
359900人学习
1142人学习
19058人学习
3206人学习
180550人学习
48569人学习
17603人学习
40936人学习
1049人学习
750人学习
32909人学习
面试时遇到类似问题,大意就是,加载页面时,会用script标签加载一些js文件资源,这些资源如果长时间没有请求回来,怎么手动终止请求?
我知道Ajax请求有个abort方法,不知道面试官是不是想问这个,以及还有什么别的请求方式的终止方法吗?
Following the voice in heart.
谢邀。像 @小溪流 说的一样,是考察timeout。
大致实现思路这样:
var sequence = ['foo', 'bar', 'baz', 'base', 'ball', 'hello', 'world', '100k more'], start = Date.now(); setTimeout(function _worker() { do { var element = sequence.shift(); // do something with element } while( sequence.length && (Date.now() - start < 100) ); if( sequence.length ) setTimeout(_worker, 25); }, 25);
以上例子,25毫秒间隔执行队列加载,加载时间在100ms内。
考察的应该是加载资源的timeout
<script>的加载总是同步(阻塞性)的,也不能用DOM操作去影响。题主需要的是独立于页面加载与渲染的异步JS加载。工具有很多,这里举一个RequireJS的例子:
<script>
HTML页面:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Test Page</title> <script src="//cdn.staticfile.org/require.js/2.1.15/require.min.js" data-main="test1"></script> </head> <body></body> </html>
保存为test1.js:
test1.js
require.config({ paths: { 'jquery': '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery', 'underscore': '//cdn.bootcss.com/underscore.js/1.7.0/underscore' }, waitSeconds: 20 }); require(['jquery'], function (module) { console.log("jQuery " + $.fn.jquery + " successfully loaded. "); }, function (err) { console.log("SHIT happened while loading jQuery! "); }); require(['underscore'], function (module) { console.log(_.last([1, 2, 3, "Underscore.js successfully loaded. "])); }, function (err) { console.log("SHIT happened while loading Underscore.js! "); });
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
精品班
技术支持
技术咨询
学习群
会员优惠
返回顶部
谢邀。
像 @小溪流 说的一样,是考察timeout。
大致实现思路这样:
以上例子,25毫秒间隔执行队列加载,加载时间在100ms内。
考察的应该是加载资源的timeout
<script>
的加载总是同步(阻塞性)的,也不能用DOM操作去影响。题主需要的是独立于页面加载与渲染的异步JS加载。工具有很多,这里举一个RequireJS的例子:HTML页面:
保存为
test1.js
: