У меня есть функция, связанная с событиями щелчка мыши на карте Google. Из-за характера функции может потребоваться несколько минут для завершения обработки (.1 сек. - 2 сек. В зависимости от скорости соединения). Само по себе это не большая проблема, однако, если пользователь получает счастливый клик, это может вызвать проблемы, а последующие вызовы немного зависят от предыдущего.Обработка и ожидание завершения предыдущих вызовов JavaScript
Что было бы лучшим способом, чтобы последующие вызовы ожидали завершения предыдущих? Или даже лучший способ справиться с ошибками предыдущих вызовов?
Я смотрел, выполнив следующие действия:
- Использование пользовательских
.addEventListener
(Link) - Использование цикла в то время как ожидает предыдущий обработал
- Используя простой, если оператор, который проверяет, если ранее нужно чтобы повторно запустить
- Использование других форм обратных вызовов
Теперь некоторые примеры кода для контекста:
this.createPath = function(){
//if previous path segment has no length
if (pathSegment[this.index-1].getPath().length === 0){
//we need the previous path segment recreated using this same function
pathSegment[this.index-1].createPath();
//now we can retry this path segment again
this.createPath();
}
//all is well, create this path segment using Google Maps direction service
else {
child.createPathLine(pathSegment[this.index-1].getEndPoint(), this.clickCoords);
}
}
Естественно этот код, как это будет цикл, как сумасшедшие, и создать много запросов.
Thanks Diego! Я изучал эти варианты, они кажутся многообещающими. Однако я не вижу простого способа построить зависимость от завершения предыдущего запроса до следующего запуска. Во второй части вы упомянете о том, что, по-моему, я могу использовать. Из тестирования я сделал это, похоже, вы можете даже пометить. Затем хорошо после того, как обещание разрешилось. Возможно, сделать манекен разрешенным отложить и поставить в очередь, используя. Будет ли это даже иметь смысл? Мне это не кажется очень чистым. –