我担心我的一个异步函数中的拼接会导致另一个函数在这种情况下抛出错误:
var sharedObject = [{key: 'foo', value: {varA: 1, varB: 5}}]
readObject: function(key) {
var index = findIndex(sharedObject, key) <- line 4
var b = sharedObject[index].value.varB <- line 5
}
spliceObject: function(key) {
var index = findIndex(sharedObject, key)
sharedObject.splice(index,1) <- line 10
}
如果异步调用readObject和spliceObject函数,并且第10行在第4行和第5行之间执行,第5行将抛出错误,因为该对象中的条目不再存在?
或者我错过了异步函数如何执行的东西?
答案 0 :(得分:3)
由于Javascript的单线程特性,你担心的是(谢天谢地)。异步代码 - 包括异步函数和setTimeout
只会在堆栈清除后才会运行。因此,正在进行的线程不会被异步的其他东西打断 - 当前线程必须在下一个线程开始之前终止。