Как вы обрабатываете сращивание переменной, которая используется совместно с функциями async?

Я волнуюсь о сращивании в одной из моих асинхронных функций, вызывающих другую функцию, чтобы вызвать ошибку в такой ситуации:

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 вызывать ошибку, потому что эта запись в объекте больше не существует?

Или я что-то пропустил с помощью функции async?

1 ответ

То, о чем вы беспокоитесь, (к счастью) невозможно из-за однопоточного характера Javascript. Асинхронный код, включая функции async и setTimeout s, будет запускаться только после очистки стека. Таким образом, текущий поток не будет прерываться чем-то еще асинхронным - текущий поток должен завершиться до следующего запуска.

licensed under cc by-sa 3.0 with attribution.