"use script"; //开发环境建议开启严格模式 var url = "https://api.waqi.info/mapq/bounds/?bounds={RECTANGLE}&inc=placeholders&k={KEY}&_={DATA}"; var table = [ { level: "一级(优)", influence: "空气质量令人满意,基本无空气污染", suggestion: " 各类人群可正常活动" }, { level: "二级(良)", influence: "空气质量可接受,但某些污染物可能对极少数异常敏感人群健康有较弱影响", suggestion: "心脏病和肺病患者症状显著加剧,运动耐受力降低,健康人群普遍出现症状", }, { level: "三级(轻度污染)", influence: "易感人群症状有轻度加剧,健康人群出现刺激症状", suggestion: "儿童、老年人及心脏病、呼吸系统疾病患者应减少长时间、高强度的户外锻炼", }, { level: "四级(中度污染)", influence: "易感人群症状有轻度加剧,健康人群出现刺激症状", suggestion: "儿童、老年人及心脏病、呼吸系统疾病患者避免长时间、高强度的户外锻炼,一般人群适量减少户外运动", }, { level: "五级(重度污染)", influence: "心脏病和肺病患者症状显著加剧,运动耐受力降低,健康人群普遍出现症状", suggestion: "儿童、老年人及心脏病、肺病患者应停留在室内,停止户外运动,一般人群减少户外运动", }, { level: "六级(严重污染)", influence: "心脏病和肺病患者症状显著加剧,运动耐受力降低,健康人群普遍出现症状", suggestion: "儿童、老年人和病人应停留在室内,避免体力消耗,一般人群避免户外活动", }, ]; var xmlHttpRequest; var nWidth = 500; var currTime; onmessage = function (e) { let bounds = e.data.bounds; currTime = new Date().getTime(); var strKey = jskey(); var nowUrl = url.replace("{RECTANGLE}", bounds).replace("{KEY}", strKey).replace("{DATA}", currTime); xmlHttpRequest = new XMLHttpRequest(); //2.设置回调函数 xmlHttpRequest.onreadystatechange = callback; //3.初始化XMLHttpRequest组建 xmlHttpRequest.open("POST", nowUrl, true); //4.发送请求 xmlHttpRequest.send(); }; function callback() { if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) { var entityTable = []; //////////////////////////////////////////////////// var currentData = JSON.parse(xmlHttpRequest.responseText); for (var i = currentData.length - 1; i >= 0; i--) { var item = currentData[i]; var aqi = parseInt(item.aqi); if (!isNumber(aqi)) { continue; } var level = 0; if (aqi > nWidth) { level = 5; aqi = nWidth - 1; } else { if (aqi > 300) { level = 5; } else if (aqi > 200) { level = 4; } else if (aqi > 150) { level = 3; } else if (aqi > 100) { level = 2; } else if (aqi > 50) { level = 1; } } var newItem = { ...item, aqi: aqi, level: table[level].level, influence: table[level].influence, suggestion: table[level].suggestion, }; entityTable.push(newItem); } ////////////////////////////////////////////////////// //self代表子线程自身 self.postMessage({ currTime: currTime, entityTable: entityTable }); self.close(); } else if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 0) { self.postMessage({ currTime: currTime, entityTable: [] }); self.close(); } } function isNumber(obj) { return typeof obj === "number" && !isNaN(obj); } function jskey() { return (function () { var u = ""; decodeURIComponent("%603Z3F%7BWS%3A3BSBdIRlJTySXYnmecFR%2CF%7BeSGHhkMh%3E%3E") .split("") .forEach(function (c) { u += String.fromCharCode(c.charCodeAt(0) - 1); }); return u; })(); }