繁体   English   中英

来自网络工作者的中止ajax呼叫

[英]Abort ajax call from web worker

我今天阅读了一些有关Web Workers的文章,并尝试了一些有关Ajax请求的内容。 实际上,我希望能够存储Web Worker发送的每个ajax请求,以便在单击元素时中止它们。 但是,无法克隆XHR对象,因此无法通过postMessage()worker方法发送该对象。

我试图这样做:

    let xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function () {
    let DONE = 4; // readyState 4 means the request is done.
    let OK = 200; // status 200 is a successful return.
    if (xhr.readyState === DONE) {
        if (xhr.status === OK) {
            handlePoints(JSON.parse(xhr.responseText));
        }
    }

    xhr.open('GET', '/api/widgets/burndownchart?widgetId='+ widgetId);
    xhr.send(null);
    self.postMessage([constants.EVENT_AJAX_CALL, xhr]);

但是我当然有这个错误:

未捕获的DOMException:无法在'DedicatedWorkerGlobalScope'上执行'postMessage':无法克隆XMLHttpRequest对象。

您对此有想法吗? PS:很抱歉我的语言错误。

您将需要将对象保留在Web Worker中,并向Web Worker发送一条消息,要求它按需中止请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM