[英]What is the execution sequence of javascript async?
考虑以下角度代码
// 1.
var something = 0;
// 2.
something = 1;
$http.get('some_url')
.then(function() {
// 3.
something = 2;
})
.catch(function(){})
// 4.
something = 3
// 5.
something = 4
// 6.
$http.get('some_url')
假设在语句4
, $http
解析
语句5
是下一步执行还是语句3
是下一步执行?
如果语句5
开始执行,是否意味着它将继续执行后续语句,直到不使用该线程为止?
如果下一条语句3
开始执行,是否意味着该线程总是被使用调用顺序时间的promise解析所打断?
排序的一般规则是什么?对于其他更复杂的情况(如嵌套的Promise等)是否有例外?
尽管javascript使用异步事件循环,但是javascript代码的执行是串行的,并且完全是确定性的。 您的代码将按以下顺序执行:
在步骤6之后,执行可以分开。 该代码将等待,直到http请求之一完成,然后解析该请求的promise,随后在您的then
语句中运行该函数。 (如前所述,由于javascript是串行执行的,因此无法同时解决2个请求)
为了直接回答您的问题, 无法在javascript中中断代码执行 。 执行函数时,它将一直运行直到返回。 在此期间完成的所有异步操作都只能在函数返回后才能运行。 多个可能发生的事件,如被触发时,将按照“先进先出”的顺序执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.