javascript - 終止JS請求的方法有哪些?
問題描述
面試時遇到類似問題,大意就是,加載頁面時,會用script標簽加載一些js文件資源,這些資源如果長時間沒有請求回來,怎么手動終止請求?
我知道Ajax請求有個abort方法,不知道面試官是不是想問這個,以及還有什么別的請求方式的終止方法嗎?
問題解答
回答1:謝邀。像 @小溪流 說的一樣,是考察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內。
回答2:考察的應該是加載資源的timeout
回答3:<script>的加載總是同步(阻塞性)的,也不能用DOM操作去影響。題主需要的是獨立于頁面加載與渲染的異步JS加載。工具有很多,這里舉一個RequireJS的例子:
HTML頁面:
<!DOCTYPE html><html><head><meta charset='utf-8' /><title>Test Page</title><script src='https://cdn.staticfile.org/require.js/2.1.15/require.min.js' data-main='test1'></script></head><body></body></html>
保存為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! ');});
相關文章:
1. 網頁爬蟲 - python爬蟲翻頁問題,請問各位大神我這段代碼怎樣翻頁,還有價格要登陸后才能看到,應該怎么解決2. python如何不改動文件的情況下修改文件的 修改日期3. 算法 - python 給定一個正整數a和一個包含任意個正整數的 列表 b,求所有<=a 的加法組合4. python - thrift 返回 TSocket read 0 bytes 求助!!!!5. javascript - 微信h5發送圖文信息,部分設備點擊“發送”按鈕時沒反應,問題較難重現,如何能找到可能存在問題的點?6. javascript - 微信小程序里怎么把頁面轉成圖片分享7. python 正則表達式提取8. python - 求一個在def中可以實現調用本def滿足特定條件continue效果的方法(標題說不太清楚,請見題內描述)9. javascript - JS用ajax爬取百度外賣店家信息10. python - Pycharm調試代碼進行列表遍歷時,如何直接賦值指定元素
