Как вы справляетесь с объединением переменной, которая является общей для асинхронных функций? - PullRequest
0 голосов
/ 25 мая 2018

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

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

Или я что-то упускаю из-за того, как выполняются асинхронные функции?

1 Ответ

0 голосов
/ 25 мая 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...