javascript - 終止JS請(qǐng)求的方法有哪些?
問題描述
面試時(shí)遇到類似問題,大意就是,加載頁面時(shí),會(huì)用script標(biāo)簽加載一些js文件資源,這些資源如果長(zhǎng)時(shí)間沒有請(qǐng)求回來,怎么手動(dòng)終止請(qǐng)求?
我知道Ajax請(qǐng)求有個(gè)abort方法,不知道面試官是不是想問這個(gè),以及還有什么別的請(qǐng)求方式的終止方法嗎?
問題解答
回答1:謝邀。像 @小溪流 說的一樣,是考察timeout。
大致實(shí)現(xiàn)思路這樣:
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毫秒間隔執(zhí)行隊(duì)列加載,加載時(shí)間在100ms內(nèi)。
回答2:考察的應(yīng)該是加載資源的timeout
回答3:<script>的加載總是同步(阻塞性)的,也不能用DOM操作去影響。題主需要的是獨(dú)立于頁面加載與渲染的異步JS加載。工具有很多,這里舉一個(gè)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! ');});
相關(guān)文章:
1. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個(gè)是怎么回事????2. html5和Flash對(duì)抗是什么情況?3. docker 17.03 怎么配置 registry mirror ?4. html5 - datatables 加載不出來數(shù)據(jù)。5. 運(yùn)行python程序時(shí)出現(xiàn)“應(yīng)用程序發(fā)生異常”的內(nèi)存錯(cuò)誤?6. node.js - mongodb查找子對(duì)象的名稱為某個(gè)值的對(duì)象的方法7. 測(cè)試自動(dòng)化html元素選擇器元素ID或DataAttribute [關(guān)閉]8. javascript - QQ第三方登錄的問題9. spring-mvc - spring-session-redis HttpSessionListener失效10. javascript - 在 model里定義的 引用表模型時(shí),model為undefined。

網(wǎng)公網(wǎng)安備