1.先解释一下这种情况产生的原因:
这是由于线程异步的问题,一般出现在本应该顺序执行两个任务,
比如A,B两个任务,正常情况下应该A先执行完成之后,B才能开始执行,但是B执行时,A还未完全执行结束,这种情况下就会导致本应该同步执行的事情变为异步
执行,此时就会出现问题,但是为什么加上断点之后就得到预期结果呢,
比如给B加上断点,这是因为给任务B加上断点,就会导致B这个任务的线程变慢,从而给任务A足够的时间去执行
解决办法:
直接举一个例子:
- 这是A任务的ajax:
$.ajax({
url:A,
data: "responAnswer=" + responAnswer,
type: "post",
success: function(data) {
},
error: function() {
}
});
- 这是B的ajax:
$.ajax({
url:B,
data: "responAnswer=" + responAnswer,
type: "post",
success: function(data) {
},
error: function() {
}
});
应该在A的ajax发送的请求执行结束之后才能执行,如果按照这种顺序去写就一定会出问题:
$.ajax({
url: A,
data: "responAnswer=" + responAnswer,
type: "post",
success: function(data) {
},
error: function() {
}
});
$.ajax({
url: B,
data: "responAnswer=" + responAnswer,
type: "post",
success: function(data) {
},
error: function() {
}
});
应该按照这种写法:
$.ajax({
url: A,
data: "responAnswer=" + responAnswer,
type: "post",
success: function(data) {
$.ajax({
url:B,
data: "responAnswer=" + responAnswer,
type: "post",
success: function(data) {
},
error: function() {
}
});
},
error: function() {
}
});
解释一下这是什么意思:
也就是说在A执行success之后才能执行B任务