this.onHookSuccess = function (eventsData, result, api) { // 异步函数
console.log(window.matQty,'起点')
if (api === "getMatAndGrid"){
let dataDestination = eventsData.request.dataDestination;
result.data.data = result.data.data&&result.data.data.length>0?result.data.data[0]:result.data.data;
result.data.data.matStr1 = result.data.data.matStr1 === "0" ? "小件" : "大件";
if(window.matCode){
if(window.matCode === result.data.data.matCode){
result.data.data.matQty = window.matQty+ window.matQty
console.log(window.matQty,'赋值')
}
}else{
result.data.data.matQty = window.matQty
}
window.matCode = result.data.data.matCode
this.setComponentData(dataDestination,result)
console.log(window.localStorage)
}
};
this["interceptParam"] = function (param, element, eventsData) {
if (eventsData.request.api === "getMatAndGrid"&&element.propsValue.refName === "#matCode"){
let barCode = param.matCode;
let boardQty = 0;
if (barCode.search("MADE IN JAPAN")>-1&&barCode.length >= 61){
param.matCode = barCode.substring(50,61).trim();
boardQty = parseInt(barCode.substring(24,30));
window.matQty = boardQty
}else if (barCode.length >= 19){
let projCount = parseInt(barCode.substring(16,19));
let dnStart = 19+projCount*5+27;
let dnEnd = dnStart + 15;
if (barCode.length >= dnEnd){
param.matCode = barCode.substring(dnStart,dnEnd).trim();
boardQty = parseInt(barCode.substring(dnEnd,dnEnd+7));
window.matQty = boardQty
}else {
this.$store.dispatch("showMassage", {
type: "error",
message: "条码格式不正确",
});
throw "unrecognizable barcode content";
}
}else {
this.$store.dispatch("showMassage", {
type: "error",
message: "条码格式不正确",
});
throw "unrecognizable barcode content";
}
} else if (eventsData.request.api === "updateOutManualPTL"){
}
return param;
}
代码如上图 看有打印的地方就行
this.onHookSuccess 是一个异步请求的回调函数,我在里面用windows 对象给一个变量
window.matQty 赋值 如果名字相同则会累加,但是在执行第二次函数后出现了 变量依然是上次 就是12的情况
问题是我打印赋值和起点的地方 一个赋值明明已经改变为24,但是第二次执行起点处却还是12。 这个变量是用全局的 window.matQty 装的,
正常第二次起点处应该是24。 求问用什么方法可以实现异步函数中装变量。第二次调用正常拿到的。 或者能拿到异步函数的变量