[英]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.