var infoList = "";
that.editorCtx.getContents({
success: function(res) {
//console.log(res.text)
var infoitem;
infoitem='{"' + that.data.jsonName[0] + '":"'+ res.text +'","' + that.data.jsonName[1] + '":"' + that.data.tempFilePaths + '","' + that.data.jsonName[2] + '":"' + that.data.classify1 + '","'+ that.data.jsonName[3] + '":"'+ that.data.classify2 + '","' + that.data.jsonName[4] + '":"' + that.data.classifyid + '","' + that.data.jsonName[5] + '":"' + that.data.price + '","' + that.data.jsonName[6] + '":"' + that.data.inventory + '"}';
infoList='"IssueIdle":['+ infoitem +']';
console.log("=======1111111=========" + infoList);
}
})
console.log("=======2222222=========" + infoList);
2222那里为空是因为还没执行赋值的操作就打印了,因为该同步操作会先于1111那些异步操作代码里的赋值。
解决方法:可以将2222那部分代码放到定时器里面(异步操作),例如:
setTimeout(() =>{ console.log("=======2222222=======" + infoList); }, 2000);
发起网络请求的时候是不是使用了async?如果的话请求在发送的时候不会影响其他进程的执行。http://www.ruanyifeng.com/blog/2015/05/async.html
好像是还没赋值完成的时候就打印输出了。
从打印结果就能看出来,很显然222那句先执行,111那句后执行且111的打印里有结果,说明你在未执行赋值的时候就去取值了。