Welche Möglichkeiten gibt es, JS-Anfragen zu beenden?
typecho
typecho 2017-06-28 09:28:55
0
3
1053

Ich bin während des Interviews auf ein ähnliches Problem gestoßen. Die allgemeine Idee ist, dass beim Laden der Seite einige JS-Dateiressourcen mithilfe von Skript-Tags geladen werden. Wenn diese Ressourcen längere Zeit nicht zurückgefordert werden, wie kann die Anforderung manuell beendet werden?

Ich weiß, dass Ajax-Anfragen eine Abbruchmethode haben. Ich frage mich, ob der Interviewer dies fragen möchte, und gibt es eine andere Möglichkeit, die Anfrage abzubrechen?

typecho
typecho

Following the voice in heart.

Antworte allen(3)
我想大声告诉你

谢邀。
像 @小溪流 说的一样,是考察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

typecho

<script>的加载总是同步(阻塞性)的,也不能用DOM操作去影响。题主需要的是独立于页面加载与渲染的异步JS加载。工具有很多,这里举一个RequireJS的例子:

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

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! ");
});
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage