目前生产出现了,handleDealData()返回的结果是[],并非是forEach执行后的数组,此问题偶发。
但是查了资料,解释说forEach的循环是同步任务。
handleDealData: function () {
var self = this
var initData = self.deepCopyInitData;
console.log("🐅 initData--->", initData)
var val = []
initData.forEach(function (obj, key) {
var _newObj_ = {
impartTarget: self.impartTarget,
insuredMark: self.insuredMark,
impartCode: obj.questList.notificationCode,
showContent: obj.question,
impartAnser: '',
showAnser: obj.active ? self.identity + ':' + obj.remark : '',
demo: obj.active ? obj.result : ''
}
var TAndF = Number(obj.active)
var allResult = obj.allResult
if (typeof obj.allResult !== "string") {
allResult = allResult.join('#')
}
_newObj_.showAnser = _newObj_.showAnser.replace(_newObj_.showContent, '')
_newObj_.impartAnser = TAndF + ',' + allResult
val.push(_newObj_)
})
return val
},
chrome测试正常,返回非[]
forEach的执行顺序是否跟机型、浏览器有关?
forEach是同步任务,所以就不要老盯着他看了,可以看看其他的地方。
handleDealData返回的val是空数组,val是根据initData循环来的,所以可以看下initData是不是空。
另外,console打印的是快照,也就是你点击展开显示的值和你打印时的值可能不一样(中间你修改了这个数据),所以,可以猜测也有可能是后面更改了val