1.問題描述:
在實際開發過程中,會因為各種各樣的問題, 導致一批數據,統一執行一個操作或者一樣的請求。
2.實現基礎知識必備:
2.1Chrome中關於Console的輸出(js調試):
console.log 用於輸出普通信息
console.info 用於輸出提示性信息
console.error用於輸出錯誤信息
console.warn用於輸出警示信息
console.dir(console) 可以查看console 下的所有方法
其他console控制台中的內部方法可以參考:
參考優秀博客:https://www.cnblogs.com/Renyi-Fan/p/9687315.html#_label0_2 ; https://www.cnblogs.com/Renyi-Fan/p/9687315.html
參考googleApi原版文檔: https://developers.google.com/web/tools/chrome-devtools/console/api
2.2 JS 中常用的方法函數的使用
JavaScript 中的常用對象,經常忘記方法名稱 : https://www.w3school.com.cn/jsref/jsref_obj_string.asp
a. sql查詢出來數據,Execl導出,之后轉換超過需要個格式裝換成object對象
Execl中的數據選擇需要的行,直接復制到 Notepad2(系統自帶) 中,利用他里面的正則表達式的替換規則做替換。(Ctrl+H)調出替換窗口
1.經常使用的正則表達式 :Regular expression search \s+ 1個或者多個空白符
2. 換行做替換用: 格式轉換成 Transform backslashes ,search String 中用\r\n做轉換
3. 用在線工具 : http://www.bejson.com/json/col2json/ EXCEL ,CSV 轉JSon
把execl 中自己選擇的行列直接復制過去,點擊裝換就
[
{"CreateTime":"2019/07/03 04:44:15","LastUpdateTime":"2019/07/03 04:44:34"},
{"CreateTime":"2019/07/03 06:10:16","LastUpdateTime":"2019/07/03 06:10:35"}]
b. object 對象集合foreach 訪問object中的每個對象
b1.對於逗號分隔的多個對象的訪問
var obstr="1050516,64244187";
function testTestIdStr(textStr)
{
//組裝成自己想要的的數據(用逗號分隔成元素)
var Ids=textStr.split(',');
ids.forEach(o=>{
console.info(o);
});
}
b2. 對於多行的數據的(notePad2 中替換 execl 中的數據替換成一個字符串)
var obstr="1050516,64244187##1050538,64271921##1050554,64287642##1050593,64166857##1050669,63310506##1050870,64226341";
function textStr2(textOrderIdStrs)
{
var obs=textOrderIdStrs.split('##');
obs.forEach(o=>{
var obAttrs=o.split(',');
console.info(obAttrs[0]);
});
}
b3.對於裝換成的JSon格式的訪問
var b=[
{"PKID":"958624","OrderId":"47763169","CreatedBy":"AUTOCommon","CreateTime":"2019/2/3 3:33"},
{"PKID":"958636","OrderId":"47514656","CreatedBy":"AUTOCommon","CreateTime":"2019/2/4 19:48"}
];
function textJson(testStr)
{
if(testStr.length==0)
{
return;
}
//下標訪問方式
testStr[0];
testStr.forEach(o=>{
console.info(o);
//直接訪問對象中成員
console.info(o.PKID);
})
}
c.js 中的定時服務的使用
- setInterval() :按照指定的周期(以毫秒計)來調用函數或計算表達式。方法會不停地調用函數,直到 clearInterval() 被調用或窗口被關閉。
- setTimeout() :在指定的毫秒數后調用函數或計算表達式。
setInterval(code,millisec,lang)(可以執行多次)
參數 | 描述 |
---|---|
code | 必需。要調用的函數或要執行的代碼串。 |
millisec | 必須。周期性執行或調用 code 之間的時間間隔,以毫秒計。 |
lang | 可選。 JScript | VBScript | JavaScript |
setTimeout(code,millisec,lang)(只執行一次)
參數 | 描述 |
---|---|
code | 必需。要調用的函數后要執行的 JavaScript 代碼串。 |
millisec | 必需。在執行代碼前需等待的毫秒數。 |
lang | 可選。腳本語言可以是:JScript | VBScript | JavaScript |
function setIntervalStr() { var count=0; var lencount=3;
//循環調用 console.time("setInterval"); var flag=setInterval( function(){ if(count>=lencount) { clearInterval(flag); } console.info(count); count++; },1000) console.timeEnd("setInterval");
//單次調用 console.time("setTimeout"); var flag2=setTimeout(function(){ console.info("aaaaa"); },2000); console.timeEnd("setTimeout"); }
執行結果: 從輸出結果來看 兩個定時期中的待執行的方法是異步的,不影響主線程的正常執行。
3.實現方法:(F12,查詢本次調用回來的報文)
循環調用同一個方法,數量多時,防止接口被打死,用了setInterval 的定時循環;限制執行過程中防止同一個單子重復調用,需要加把下標致前。
調用方法職中得request參數
request headers參數
1.模擬一次報文請求中 Form Data 數據 請求
/// 定時循環調用執行方法
function textCallsetInterval(textOrderIds)
{ var oBaosuns=textOrderIds.split(','); var index=0; var count=oBaosuns.length;
// 定時服務開始 var flag=setInterval (function(){ if(index>=count) {
//定時服務終止 clearInterval(flag); }
//要執行請求的對象 var o1=oBaosuns[index];
//先放在這里,防止重復操作 index++;
//調用方法與 NetWork中單次調用中 RequestHeaders 中的path, obj需要傳遞額參數為 NetWork中的 全量Form Data 數據的組裝 $.post('/XX/XXX',{ guid: 'b682d392-6196-4294-b9e6-58f869a52f37', servicePath: 'XXXXXX', serviceName: 'IXXXXXXX', operationName: 'XXXXXXXXX', extendHistories:[{Index:1}], parameterValues:[{Index:1 },{Index:2,Value:o1 },{Index:3,Value:2 },{Index:4},{Index:5},{Index:6 },{Index:7},{Index:8,Value:0}], },function(result){ if(!result.IsSuccess) { console.error(o1); } else { console.log (o1); } }); } ,2000) }
2.如果有按鈕,則模擬點擊按鈕事件
var a='64131995,64136656'
var datas=a.split(',');
var i=0;
function auto() {
if (i <datas.length) {
setTimeout(() => {
//對發送請求中的參數重新進行賦值
var request = $("#requestcontainer ul li");
request.eq(2).find('input').val(datas[i]);
console.info(datas[i]);
i++;
//找到需要操作的按鈕的模擬點擊操作
$('#callWcfServiceBtn').click();
auto();
}, 2000);
}
}
4.總結:
JS腳本編程,能輔助我們處理一些重復的工作,而不用動后台代碼。